Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [ZF][ZendFramework] Pytanie gdzie umieścić powtarzający się kod
Forum PHP.pl > Forum > PHP > Frameworki
VegetaSSJ
Witam koledzy, temat chyba niewiele mówi ale nie miałem pomysłu jak zwęzić do paru słów to o co mi chodzi.

Sprawa wygląda tak, że mam na przykład taki kod który wysyła maila do użytkownika. Chciałbym używać tego kodu w kilku miejscach, tak więc nie chcę z tego robić akcji kontrolera (wiem, mógłbym użyć tej akcji w innych kontrolerach przez np action helper, ale wydaje mi się to nieeleganckie). Nie chce tego kodu umieszczać w helperze, ponieważ z widokiem ma on niewiele wspólnego. W CakePHP w takim przypadku stworzył bym komponent i dołączał go do kontrolerów w których mi potrzebny.

Więc pytanie jest takie, jak Wy to robicie w Zendzie. Mam nadzieje że wiadomo o co mi chodzi winksmiley.jpg
dr_bonzo
Utworz po prostu nowa klase WysylaczEmailiDoUsera i go uzywaj.
Pilsener
A od czego Zend_Mail? winksmiley.jpg

Jeśli mamy powtarzający się kod to możemy z tego zrobić:
- widok
- helper
- akcję
- kontroler
- moduł
- plugin
- komponent

Zależy, do czego to ma służyć smile.gif

ZF to raczej zbiór komponentów, nie wymusza np. MVC jak inne frameworki a jedynie sugeruje. To Ty decydujesz w jakim stopniu korzystać z ZF a w jakim ze swoich rozwiązań.
VegetaSSJ
Możesz trochę rozwinąć koncepcje pluginu i komponentu? Pozostałe koncepcje odpadają. W chwili obecnej napisałem klasę dziedziczącą po Zend_Mail i umieściłem w /library/My/Mail/nazwaklasy.php, czyli zrobiłem to w taki spsób w jaki Zend sugeruje tworzyć rozszerzenia do frameworka (nowe filtry, walidatory etc). Jednak nie pasuje mi to za bardzo ponieważ uważam że ten kod powinien znajdować się w katalogu z aplikacją /application, tam gdzie kontrolery, widoki ... czyli rzeczy związane bezpośrednio z tematem aplikacji. Chodzi o to że jeżeli zacznę kolejny projekt, skopiuję z tego katalog /library, gdzie jest framework zenda + moje rozszerzenia związane z frameworkiem, nie chcę za każdym razem przeszukiwać tego zbioru i szukać plików które nie są potrzebne (czyli są związane bezpośrednio z tematem poprzedniej aplikacji). Nie wiem czy za bardzo nie zamieszałem, jeżeli tak pytajcie.
zend
Myślenie nie boli happy.gif A czemu nie stworzysz dwóch przestrzeni nazw, jednej na klasy z których korzystasz w wielu projektach a drugiej na klasy aplikacji np Application_ i My_?
VegetaSSJ
Kolego @zend masz rację myślenie nie boli. Więc pomyśl chwilę dlaczego napisałem na forum? Wszak masz podane na tacy pytanie "Więc pytanie jest takie, jak Wy to robicie w Zendzie". Pomysłów jak to zrobić mam być może więcej niż ty, jednak po to założyłem wątek aby dowiedzieć się jak robią to inni userzy Zenda. Tak więc kolego, zanim napiszesz kolejny, nabijający licznik post "pomyśl" trochę czy masz coś wartościowego do wyrażenia.
Pilsener
Plugin komponent piszesz na podobnej zasadzie, jak napisane są moduły frameworka, po prostu trzymając się zasad nazewnictwa i plikowni tworzysz swoją klasę i z niej korzystasz w kontrolerach, widokach czy modelach.

Cytat
uważam że ten kod powinien znajdować się w katalogu z aplikacją
- po pierwsze co za różnica a po drugie, co szkodzi to zmienić? Wystarczy dodać ścieżkę do komponentu przed użyciem.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.