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
- php
- zend framework
- html
- sieć
- http
- programowanie
- bazy danych
- kodowanie
- mysql
- xml
- xhtml
- postgresql
- css
- internet
- javascript
- jquery
- zend framework 3
- apache
- phptal
- sqlite
Komentarze
Nie ma jeszcze żadnych komentarzy do wyświetlenia. Może chcesz zostać pierwszą osobą która podzieli się swoją opinią?