![]() |
![]() |
![]()
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? -------------------- scriptun.com. Startup z poradnikami do gier ttp.zone i ttpzone.pl
|
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 367 Pomógł: 10 Dołączył: 20.05.2005 Ostrzeżenie: (0%) ![]() ![]() |
Cytat To mnie ciekawi, jak wszystkie przestrzenie są rejestrowane? Czyli odpalają się jednocześnie wszystkie bootstrapy? A nawet jak nie, to tworzą się namespace`y dla każdego modułu? Dziwna sprawa i chyba mało optymalna ;/ ... szczerze to sam Zend Framework jest mało optymalny, nie wiem czy przeglądałeś kod, ale jest duża nadmiarowość kodu. Coś za coś, funkcjonaloność i wygoda programowania kosztem wydajności ![]() Co do odpalania wszystkich bootstrapów, to tak w momencie startu aplikacji wywołuje ona wszystkie boostrapy w modułach, wtedy jeśli w pliku application.ini dyrektywa resources.modules[] = będzie pusta. Alternatywnie możesz podać tylko wybrane moduły. To zrozumiałe, że odpalane są wszystkie bootstrapy (o ile nie ograniczyliśmy tego w pliku ini), bo skoro np. chcemy zarejestrować plugin do sprawdzenia uprawnień użytkowników, który znajduje się w module users to gdyby bootstrap nie wywołał wszystkich bootstrapów modułów to nasz plugin by się nie zarejestrował, gdyby był wywołany inny moduł niż users. Możesz oczywiście powiedzieć, po jakiego grzyba chce plugin do sprawdzania uprawnień rejestrować w boostrapie danego modułu zamiast w głównym bootstrapie. A no po to że tak podzieliłem moją aplikację a moduły są po to żeby kod od siebie izolować w maksymalnym stopniu. To daje mi większość elastyczność i po wyłączeniu takiego modułu nie boje się, że aplikacja przestanie mi działać. Bo np role zdefiniowałem sobie jako stałe w klasie modelu w module users. Gdybym wyłączył ten moduł z aplikacji a plugin do sprawdzenia uprawnień byłby rejestrowany w głównym bootstrapie to dostałbym błędy bo plugin próbowałby wywołać stałe z klasy modelu w module users, który przecież wyłączyłem (stałych używam do definiowania ról użytkowników). Przestrzenie są widoczne w całej aplikacji, z prostej przyczyny - framework nie sprawdza skąd są wywołane bo to nie takie proste o ile wogóle możliwe :-) a przecież jak w kodzie php zrobisz include klasy, nieważne gdzie to przecież klasy są widoczne globalnie i możesz je inicjować wszędzie - tak wynika z budowy języka php. Więc framework nie może tego ograniczyć. To że możesz wywołać klasę z innego modułu, nie znaczy że musisz to robić ![]() Potestuj, które rozwiązanie Ci bardziej odpowiada, które jest szybsze, jak bardzo spowolni Ci aplikacje etc.. etc.. |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 29.06.2025 - 03:56 |