![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 1 319 Pomógł: 118 Dołączył: 26.11.2003 Skąd: Lublin Ostrzeżenie: (0%) ![]() ![]() |
Witam
Ciekawi mnie jakie Wy macie rozwiązania na modele w aplikacjach z modułami. Kiedy ustawimy sobie moduły, autoloader automatycznie nam dopisuje ścieżkę do modeli "zbiorczych", które są w katalogu głównym aplikacji, a teraz co z modelami, które mają być dedykowane dla danego modułu? Czyli jak wywołać model, który będzie np. w katalogu: Cytat application/module/NAZWAJAKAS/models/ModelTestowy.php Tam autoloader sam już nie wejdzie, trzeba sobie radzić. Niektórzy robią to dodając include_paths do każdego modułu, inni piszą plugin, który dodaje include_path oddzielnie dla każdego modułu, np:
Macie na to jakieś ciekawe rozwiązania? |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 367 Pomógł: 10 Dołączył: 20.05.2005 Ostrzeżenie: (0%) ![]() ![]() |
Nie musisz kopiować zawartości innych bootstrapów, są to dodatkowe bootstrapy z możliwością rejestracji specyficznych zasobów dla danego modułu. Dodatkowo możesz z głównego bootstrapa, dostać się do instancji obiektów tych klas. Zarejestrowany element plugin etc. jest widziany w całej aplikacji tak jakbyś rejestrował go w tym głównym bootstrapie. No i przede wszystkim z automatu rejestrują Ci przestrzeń nazw i możesz mieć oddzielne modele w poszczególnych modułach, te modele mogą też dziedziczyć po modelach wspólnych dla aplikacji (tzn. z application/models). Zarejestrowane przestrzenie widoczne są w całej aplikacji czyli we wszystkich modułach. Czyli będąc w kontrolerze modułu np. admin możesz wywołać model z modułu np. users. Nie wiem czemu nie przekonuje Cię to rozwiązanie, przecież 20 pustych plików Bootstrap.php to nic złego, a czasami może je wykorzystasz do rejestracji jakiegoś zasobu na potrzeby danego modułu.
No dobra ale wracając do problemu, to przede wszystkim zrób to dobrze. Plugin to także złe miejsce do tego, bo przecież plugin uruchamiany jest po rozruchu aplikacji (po wykonaniu procesów bootstrapa) Nie dodawaj tego do include_path bo to nie twoja działka, takie sprawy zostaw Frameworkow'i. W Zend Framework jest od takich spraw Zend_Loader a w twoim przypadku jest specjalna klasa do tego Zend_Application_Module_Autoloader. A więc rozwiązaniem twojego problemu będzie taki o to główny Bootstrap.
pisałem z palca więc może coś trzeba poprawić. Ale generalnie powinno latać (IMG:style_emoticons/default/winksmiley.jpg) |
|
|
![]() ![]() |
![]() |
Aktualny czas: 9.10.2025 - 13:46 |