Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [Symfony2][Symfony]Używanie własnych klas w Entity
athabus
post
Post #1





Grupa: Zarejestrowani
Postów: 898
Pomógł: 48
Dołączył: 2.11.2005
Skąd: Poznań

Ostrzeżenie: (0%)
-----


Dalej uczę się korzystać z Symfony i chciałby zrobić pewne rzeczy "ładnie". Na dzisiaj mam Zestaw swoich klas, które często używam w różnych projektach. Pomyślałem, żeby zrobić sobie z nich bundla Dajmy na to AcmeUtilBundle.

Mam w nim klasę Converter i metodę statyczną slugify.


Ok i co dalej? Rozumiem, że mogę sobie zdeklarować Service i używać wszystkiego w kontrolerze np.
  1. $this->get('Converter')->slugify($name);


Jak jednak użyć ładnie tych metod w Entity, żeby np. podczas ustawiania pola name od razu generować slug?

A może w ogóle źle zabieram się do tego problemu?

Ten post edytował athabus 8.10.2014, 14:54:13
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
destroyerr
post
Post #2





Grupa: Zarejestrowani
Postów: 879
Pomógł: 189
Dołączył: 14.06.2006
Skąd: Bytom

Ostrzeżenie: (0%)
-----


Ja zacznę od tego, że swoich klas wcale nie musisz wrzucać do bundla. Mogą sobie pozostać poza nim. Dodatkowo, jeżeli Ci to wystarcza, to możesz dalej korzystać z metody statycznej lub zwykłej funkcji. W opozycji do pomysłu ze zdarzeniami, jeżeli nie lubisz żeby model był związany z frameworkiem to proponuję następujące rozwiązanie:
  1. use Ddd\Slug\Model\SluggableInterface;
  2. use Ddd\Slug\Service\SlugGeneratorInterface;
  3.  
  4. class Article implements SluggableInterface
  5. {
  6. private $createdAt;
  7. private $title;
  8. private $slug;
  9.  
  10. public function slugify(SlugGeneratorInterface $slugifier)
  11. {
  12. $this->slug = $slugifier->slugify(array($this->createdAt->format('Y'), $this->title));
  13. }
  14.  
  15. // other methods...
  16. }

  1. use Ddd\Slug\Infra\SlugGenerator\DefaultSlugGenerator;
  2. use Ddd\Slug\Infra\Transliterator\LatinTransliterator;
  3.  
  4. $article = new Article();
  5. $article->setTitle('Hello world!');
  6. $article->slugify(new DefaultSlugGenerator(array(new LatinTransliterator())));
  7.  
  8. echo $article->getSlug(); // writes "2013-hello-world"


Co do korzystania z menedżerów to nie polecam. Prowadzi to często do obiektów które wykonują wiele zadań.
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 14.10.2025 - 10:06