вторник, 10 августа 2010 г.

ZF фронтконтроллер

В мвц главный парень контроллер -- фронт контроллер. К нему привязываются другие контроллеры, а еще запускается хелпер ВьюРендрер, который находит для каждого контроллера в одном уровне с его папкой папку вьюс скриптс и по каждому имени екшина ищет соответсвующий пхтмл. Через это будет воспроизводиться вью. ZF Чтобы подключить класс из инклюд паза все равно нужно делать инклюд файла именно этого класса:)


-------------------Контроллер----------------------------------------


Фронт всему голова. Он получает Реквест. Потом передает его Роутеру, тот его парсит под Контроллер и его Акшин, результат парсинга заносится в обьек Реквест. Потом Фронт запускает Диспетчер, последний по результатам парсинга в Реквесте, вызывает Экшин нужного Контроллера. Котнроллер оставляет свой результат в Респонсе и некий статус в Реквесте. По этому статусу Фронт определяет запустить ли Еще раз Диспетчер, чтобы тот вызвал другой Контроллер, или послать Респонс в сеть. Фронт -- синглтон.

---------------------Его главные методы-----------------------------------:
getInstance setControllerDirectory() and addControllerDirectory Позволяет указать папку с Акшин Контроллерами как ядра приложения, так и модулей: 1. // Set the default controller directory: 2. $front->setControllerDirectory('../application/controllers'); 3. 4. // Set several module directories at once: 5. $front->setControllerDirectory(array( 6. 'default' => '../application/controllers', 7. 'blog' => '../modules/blog/controllers', 8. 'news' => '../modules/news/controllers', 9. )); 10. 11. // Add a 'foo' module directory: 12. $front->addControllerDirectory('../modules/foo/controllers', 'foo'); addModuleDirectory() and getModuleDirectory() Позволяет добавить папку которая просканиться и будут доступные все модули, которые находятся в ней. dispatch(Zend_Controller_Request_Abstract $request = null, Zend_Controller_Response_Abstract $response = null) Проганяет следующий процессы: • Routing • Dispatching • Response Если не передались кастомные, то Реавест и Респонс по умолчанию будут HTTP. run(String "/path/to/app/controllers") Он получает обьект класса Фронт, Устанавливает путь к контроллерам, и вызывает диспатч. Метод подходит для приложений, которые не нуждаются в настройки среды Фронта.

-------------Методы доступа среды Фронта-------------------------------:
resetInstance() -- обнулить среду, используется в системах с несколькими Фронтами. setDefaultControllerName() and getDefaultControllerName() -- index по-умолчанию setDefaultAction() and getDefaultAction() -- index по-умолчанию setRequest() and getRequest() -- если сет то передается имя класса setRouter() getRouter() -- если сет то передается имя класса setBaseUrl() and getBaseUrl() -- до приложений в подкаталогах setDispatcher() and getDispatcher() -- если сет то имя класса setResponse() and getResponse() -- если сет то имя класса registerPlugin(Zend_Controller_Plugin_Abstract $plugin, $stackIndex = null) unregisterPlugin($plugin) throwExceptions($flag) по умолчанию фолс, ексепшины собираюстя в Респонс обьекте. returnResponse($flag) по умолчанию фолс, Фронт сразу отправляет ответ клиенту, если поставить тру, то собранный из екшин контроллеров ответ, будет возвращаться с dispatch(), его можно проверить на ошибки или нечто подобное.

----------------------параметры Фронта--------------------------------------
У Фронта есть параметры которые задают его поведение. Это делается через сет/гет/клиаПарамс

Комментариев нет:

Отправить комментарий