Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [ZendFramework][ZF] Auoloader i library w modułach
VegetaSSJ
post
Post #1





Grupa: Zarejestrowani
Postów: 78
Pomógł: 2
Dołączył: 21.10.2006

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


Witam, pytanie związane jest z mechanizmem autoloadu w Zendzie.

Mam taką strukturę aplikacji w przybliżeniu:

  1.  
  2. /projekt
  3. /application
  4. /library
  5. /App
  6. /modules
  7. /front
  8. /library
  9. /Front
  10. /controllers
  11. /models
  12. /forms
  13. ...
  14. Bootstrap.php
  15. /admin
  16. /library
  17. /Admin
  18. /controllers
  19. /models
  20. /forms
  21. ...
  22. Bootstrap.php
  23. ...
  24. Bootstrap.php
  25. /library
  26. /My
  27. /Zend
  28. ...
  29. ...
  30. index.php
  31.  


Jak widzicie koledzy mam kilka przestrzeni nazw dla klas:
My, Zend, App, Front, Admin

Nie ma problemu z autolaodem klas My, Zend i App ponieważ początkowy include_path zawiera ścieżki '/library' (My, Zend) oraz '/application/library' (App) - w przypadku tych bibliotek w autoladerze wystarczy że zarejestruję odpowiednie przestrzenie nazw: $autolaoder->registerNamespace(array('My', 'App'));
Pytanie jest teraz takie jak zrobić aby dynamicznie do include_path lądowały ścieżki do katalogu library w modułach - tak żebym mógł również zarejestrować przestrzenie nazw Front i Admin - a w przyszłości także inne specyficzne dla kolejnych modułów.
Chodzi mi oczywiście o zrobienie tego z wykorzystaniem mechanizmów zenda, najlepiej w bootstrapach poszczególnych modułów. W chwili obecnej obszedłem problem w ten sposób że w index.php na sztywno dopisałem do include_patha ścieżki /application/modules/front/library i /application/modules/admin/library a w bootstrapach dla modułów dodaję te przestrzenie nazw.
Brakuje mi w tym przypadku czegoś takiego jak ma Zend_Loader_PluginLoader gdzie mamy metodę addPrefixPath('Admin', '/application/modules/admin/library/Admin').

Proszę o pomoc. Być może jest jakiś mechanizm którego ja nie dostrzegam / nie umiem skorzystać.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 2)
Daimos
post
Post #2





Grupa: Zarejestrowani
Postów: 1 319
Pomógł: 118
Dołączył: 26.11.2003
Skąd: Lublin

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


Może nie takie zendowe rozwiązanie, ale pluginek działa winksmiley.jpg
  1. public function dispatchLoopStartup(Zend_Controller_Request_Abstract $req)
  2. {
  3. $moduleName = $req->getModuleName();
  4. PATH_SEPARATOR . APPLICATION_PATH . '/modules/' . $moduleName . '/library/' . $moduleName);
  5. }

Możesz spróbować tutaj dodać przestrzenie nazw do autoloadera, zamiast includepath, czego nie sprawdzałem, ale powinno działać. Rozwiązanie w bootstrapie będzie Ci dodawało WSZYSTKIE przestrzenie na raz do każdego modułu, o czym dyskutowałem z eai w tym temacie Temat: ZendFramework modele w aplikacji z modulami, a za pomocą takiego plugina dodawane są tylko w aktywnym module

Ten post edytował my salsa 20.10.2010, 06:52:32


--------------------
scriptun.com. Startup z poradnikami do gier ttp.zone i ttpzone.pl
Go to the top of the page
+Quote Post
VegetaSSJ
post
Post #3





Grupa: Zarejestrowani
Postów: 78
Pomógł: 2
Dołączył: 21.10.2006

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


Tak, śledziłem Waszą dyskusję. Mnie interesuje ładowanie wszystkich przestrzeni, więc rozwiązanie które podesłałeś mogę wykonać w abstrakcyjnym bootstrapie po którym dziedziczą bootrstrapy modułów. Jednak nie o coś takiego mi chodziło a raczej o uzyskanie info czy w zendzie są do tego odpowiednie narzędzia.
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 20.08.2025 - 13:36