Итак, в прошлый раз мы установили Zend Framework. Давайте теперь посмотрим, что происходит при запуске приложения. Мы рассмотрим, что из себя представляет файл index.php, как создаются контроллеры, как добавить своей действие.
Начнем с файла index.php, куда направляются все запросы нашего приложения.
Открыв файл index.php в папке public, мы увидим следующий код:
// Define path to application directory
defined('APPLICATION_PATH')
|| define('APPLICATION_PATH', realpath(dirname(FILE) . '/../application'));
// Define application environment
defined('APPLICATION_ENV')
|| define('APPLICATION_ENV', (getenv('APPLICATION_ENV') ? getenv('APPLICATION_ENV') : 'production'));
// Ensure library/ is on include_path
set_include_path(implode(PATH_SEPARATOR, array(
realpath(APPLICATION_PATH . '/../library'),
get_include_path(),
)));
/** Zend_Application */
require_once 'Zend/Application.php';
// Create application, bootstrap, and run
$application = new Zend_Application(
APPLICATION_ENV,
APPLICATION_PATH . '/configs/application.ini'
);
$application->bootstrap()
->run();
Мы определяем две константы APPLICATION_PATH – указывает на папку, где находятся скрипты нашего приложения (папка application), и APPLICATION_ENVIRONMENT – играет роль переменной окружения, которую мы можем использовать для различных целей, в частности, настройка вывода сообщений об ошибках. Например, мы можем отключить вывод сообщений об ошибках на production системе, а вместо этого отправлять все ошибки себе на почту. Изначально, она имеет значение ‘production’.
Далее объявляется класс Zend_Application, который появился в релизе 1.8 фреймворка. Этот класс упрощает создание загрузчика приложения.
В конструктор класса передается два параметра. Первый – это наше окружение, а второй – путь к конфигурационному файлу приложения, либо можно передать объект Zend_Config. Если указывается путь до файла, то файл должен иметь расширение либо ini, либо xml.
Последняя строчка индексного файла запускает наше приложение.
Как упоминалось в прошлый раз, Zend Framework по умолчанию обрабатывает url в виде контроллера, который должен быть вызван, и действия этого контроллера. Введите http://zf/index, http://zf/index/index, вы получите одну и ту же страницу. Таким образом в связке /index/index сначала указывается контроллер index, затем действие index. Если действие не будет указано, то выполняется действие по-умолчанию, которым является index.
Если набрать в адресной строке http://zf/index/hello, то получите сообщение, что страница не найдена. Однако никакой дополнительной информации нам не будет показано. Давайте теперь поменяем APPLICATION_ENVIRONMENT с ‘production’ на ‘development’, и обновим страницу. Теперь мы видим отладочную информацию, и строка Message говорит нам, что действие hello не было найдено.
Добавим его. Для этого откроем в папке controllers файл IndexController.php и добавим действие helloAction.
public function helloAction(){}
Нам осталось создать скрипт представления для нашего действия. Имя действия включает в себя название и суффикс Action. Перейдем в папку application/views/scripts/index и создадим новый файл hello.phtml следующего содержания:
<h2>I am Hello action of Index Controller</h2>

Получилось! Теперь создадим новый контроллер book. Имя контроллера должно начинаться с заглавной буквы. Имя включает в себя название контроллера и суффикс Controller. В папку controllers добавим новый файл BookController.php.
class BookController extends Zend_Controller_Action
{
//put your code here
public function indexAction()
{
}
}
В папку application/views/scripts добабим новую папку book, а внутри нее создадим файл представления index.phtml для нашего index контроллера .
<h2>I am index action of Book Controller</h2>
Набрав в адресной строке http://zf/book, мы увидим сообщение:
I am index action of Book Controller
Как видите, ничего сложного здесь нет. Это базовые принципы связки контроллер-действие. Теперь вы можете писать свои простенькие приложения 🙂
Спасибо огромное за то, что вы трудитесь над переводом документации! Не нашел вариантов обратной связи и по этому решил поблагодарить тут. Еще раз огромное спасибо!
Пожалуйста. На странице перевода документации есть мой email.
Давненько меня тут не было, респект за вашу работу.
Большое спасибо! 🙂
могу сказать только одно – СПАСИБО! 🙂