Итак, в прошлый раз мы установили 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

Как видите, ничего сложного здесь нет. Это базовые принципы связки контроллер-действие. Теперь вы можете писать свои простенькие приложения   🙂

Leave a Reply

5 thoughts on “Как создавать свои приложения”
  1. Спасибо огромное за то, что вы трудитесь над переводом документации! Не нашел вариантов обратной связи и по этому решил поблагодарить тут. Еще раз огромное спасибо!

Leave a Reply

Your email address will not be published. Required fields are marked *