Zend Framework - Automatyczne ustawianie ścieżki dla katalogu "models"
Artykuł dodany: 12 czerwca 2008. Ostatnia modyfikacja: 12 sierpnia 2009.
Stopień trudności (1 - dla początkujących, 5 - dla ekspertów): 2
Wyobraźmy sobie sytuację w której wykorzystujemy w naszym projekcie kilka różnych modułów np. blog, galeria, forum. Struktura katalogowa może prezentować się w sposób następujący:
/application /config (opcjonalnie) /default /config (opcjonalnie) /controllers /models /views /gallery /controllers /models /views /forum /controllers /models /views /htdocs /images /scripts /styles index.php /library /Zend /(inne biblioteki) /tmp /sessions /cache /view_compiles
Problem w tym, że nie jesteśmy teraz w stanie łatwo dołączać klas modelu z katalogu ‘application/module/models’. Musielibyśmy jawnie definiować regułę (przykładowo):
require_once '../application/gallery/models/jakisPlik.php';
Możemy jednak zautomatyzować cały proces dodając do kontrolera nowy plugin.
<?php require_once 'Zend/Controller/Plugin/Abstract.php'; class NaszeKlasy_Controller_Plugin_SetModelPath extends Zend_Controller_Plugin_Abstract { public function preDispatch(Zend_Controller_Request_Abstract $request) { $moduleName = ($request->getModuleName()) ? $request->getModuleName() : 'default'; ini_set('include_path', ini_get('include_path').PATH_SEPARATOR.'../application/'.$moduleName.'/models/'); } }
Następnie należy plugin zarejestrować:
$frontController = Zend_Controller_Front::getInstance(); $frontController->registerPlugin(new NaszeKlasy_Controller_Plugin_SetModelPath());
Gdy wykorzystujemy Zend_Loader::registerAutoload() możemy bezpośrednio utworzyć nowy obiekt.
Oczywiście istnieją również inne sposoby jednak ten ma tą zaletę, iż ścieżka ustawiana jest dla aktualnie wczytanego modułu. Nie zachodzi kolizja nazw i nie rejestrujemy niepotrzebnych w danej chwili plików z innego modułu.
Dodaj komentarz
- programowanie
- css
- php
- html
- javascript
- bazy danych
- kodowanie
- mysql
- xml
- xhtml
- postgresql
- zend framework
- jquery
- sieć
- http
- internet
- apache
- zend framework 3
- sqlite
- phptal
Komentarze
Nie ma jeszcze żadnych komentarzy do wyświetlenia. Może chcesz zostać pierwszą osobą która podzieli się swoją opinią?