Отправляет email-рассылки с помощью сервиса Sendsay

PHP 5: Новые возможности.

  Все выпуски  

ZEND FRAMEWORK: Дополнительный файл начальной загрузки


PHP 5: Новые возможности.

С наступающими праздниками!

В рассылке объявляется перерыв до третьей декады января.


В некоторых случаях бывает нужно развернуть MVC приложение на основе Zend Framework не для целого сайта, а для отдельной директории (см. Глава 9, Класс Zend_Controller_RewriteRouter). К такому решению может подтолкнуть, например, наличие уже функционирующего сайта.

Другим поводом может служить потребность в реализации приложения под другой (отличной от основной) версией PHP. Так, например, основное приложение может работать под последней стабильной версией PHP 5, а дополнительное - под экпериментальной версией PHP 6.

На текущем практическом занятии нам предстоит реализовать решение именно для последнего случая.

На подготовительном этапе необходимо подготовить директорию для работы под отличной от основной версией PHP и организовать перенаправление запросов к ней в дополнительный файл начальной загрузки. Также следует создать иерархическую структуру директорий для дополнительного приложения. Предполагается, что Zend Framework и нужная версия PHP уже установлены на сервере и существует способ их подключения.

Пусть дополнительное приложение будет располагаться в директории php6 на сайте pterodactyl.l2p.net. Подключим к этой директории PHP 6.0.0-dev, воспользовавшись рекомендациями хостера: добавим туда файл .htaccess со следующей директивой.

AddHandler application/x-httpd-php6 .php
[Замечание]Замечание

Конечно же, на другом сервере этот способ может быть иным.

Затем перенаправим все запросы к этой директории в файл начальной загрузки index.php, находящийся в этой же директории. Для этого добавим в корневой файл .htaccess дополнительное правило.

RewriteRule ^php6 php6/index.php
[Замечание]Замечание

Если перенаправление не было включено ранее, то перед этой директивой следует добавить еще одну.

RewriteEngine on

Организуем дополнительные директории подобно основным (см. Пример 4.3, «Рекомендуемая структура директорий»), расположив их в директории application6.

|---application6/
|   |---controllers/
|   |---models/
|   |---views/
        

Создадим объект дополнительного контроллера в локальном файле начальной загрузки php6/index.php. В целом, этот файл мало чем отличается от основного (см. Пример 4.7, «Файл начальной загрузки», Пример 16.1, «Расширенный файл начальной загрузки»), но мы будем использовать роутер Zend_Controller_RewriteRouter вместо стандартного по умолчанию. Следующий код следует добавить непосредственно перед вызовом статического метода Zend_Controller_Front::run().

[Внимание]Внимание

При добавлении нового маршрута с помощью метода addRoute() следует иметь в виду, что в версии Zend Framework 0.2.0 его вызов был изменен. Об изменениях в новой версии см. Приложение B, Изменения в Zend Framework 0.2.0 (в частности, «Класс Zend_Controller_RewriteRouter»).

<?php

    $router = new Zend_Controller_RewriteRouter();
    $controller = Zend_Controller_Front::getInstance();
    $controller->setRouter($router);
        
[Подсказка]Подсказка

Для получения дополнительной информации о классе Zend_Controller_RewriteRouter см. Глава 9, Класс Zend_Controller_RewriteRouter.

Роутер, которым мы заменили стандартный (см. «Дополнительный контроллер»), по умолчанию уже поддерживает индексный контроллер (IndexController) и индексную акцию (IndexAction()). На данном этапе ограничимся разработкой только этого индексного контроллера; причем, простоты ради, в индексной акции будем непосредственно (без подключения видовой и модельной частей приложения) выводить сообщение о версии PHP.

<?php

class IndexController extends Zend_Controller_Action {
    public function indexAction()
    {
        print 'Powered with PHP ' . phpversion();
    }

    public function noRouteAction()
    {
        $this->_redirect('/');
    }
}
        

Created with DocBook


В избранное