Automatyczne ładowanie zasobów
Często, podczas tworzenia aplikacji, zachowanie zalecanego przez Zend Framework standardu
dotyczącego utrzymania stosunku 1:1 pomiędzy klasami a plikami jest trudne bądź niekorzystne
z punktu widzenia wydajności. To oznacza, że pliki z klasami nie zostaną odnalezione przez
autoloader.
Zgodnie z celami autoloadera a zwłaszcza
z ostatnim punktem, powyższa sytuacja jest obsługiwana przez autoloader Zend Framework
poprzez Zend_Loader_Autoloader_Resource.
Zasób to jedynie nazwa odpowiadająca przestrzeni nazw komponentu (dołączona do przestrzeni
nazw autoloadera) wraz ze ścieżką (relatywnie do ścieżki bazowej autoloadera). W praktyce
można użyć następującego kodu:
'Blog',
'basePath' => APPLICATION_PATH . '/modules/blog',
));
]]>
Po włączeniu autoloadera należy "poinformować" go o typach zasobów, które powinien dołączać.
Są to, po prostu, pary względnych ścieżek oraz prefiksów.
Jako przykład może posłużyć następujące drzewo katalogów:
Pierwszym krokiem jest utworzenie autoloadera zasobów:
'sciezka/do/zasobow/',
'namespace' => 'Foo',
));
]]>
Następnie należy zdefiniować typy zasobów.
Zend_Loader_Autoloader_Resourse::addResourceType() przyjmuje trzy
argumenty: typ zasobu (dowolny łańcuch znaków), ścieżka relatywna do
ścieżki bazowej autoloadera, w której zasób się znajduje oraz prefiks używany przez dany typ
zasobu. W powyższym przykładzie istnieją trzy rodzaje zasobów: formularze (w katalogu
"forms" z prefiksem "Form"), modele (w katalogu "models" z prefiksem "Model") oraz modele
tabeli bazy danych (w katalogu "models/DbTable" z prefiksem
"Model_DbTable"). Następujący przykład pokazuje sposób ich
definiowania:
addResourceType('form', 'forms', 'Form')
->addResourceType('model', 'models', 'Model')
->addResourceType('dbtable', 'models/DbTable', 'Model_DbTable');
]]>
Po zdefiniowaniu, można używać tych klas bez ręcznego dołączania:
automatyczne ładowanie zasobu modułu
Implementacja wzorca projektowego MVC w Zend Framework zachęca do
używania modułów, które są mini-aplikacjami w ramach tworzonego programu. Moduły
przeważnie posiadają wiele typów zasobów a Zend Framework nawet
zaleca standardową strukturę katalogów
dla modułu. Autoloader zasobów staje się bardzo przydatny w tym kontekście.
Przez to, jeśli umieści się plik z klasą bootstrap pochodną do
Zend_Application_Module_Bootstrap to autoloader zostanie
domyślnie włączony. Aby uzyskać więcej informacji należy zapoznać się z
dokumentacją
Zend_Loader_Autoloader_Module.