Введение в Zend Framework

 Learning Zend Framework

appendix

 Zend Framework Reference


  • Zend_Gdata
  • Zend_Http
  • Zend_InfoCard
  • Zend_Json
  • Zend_Layout
  • Zend_Ldap
  • Zend_Loader
  • Zend_Locale
  • Zend_Log
  • Zend_Mail
  • Zend_Markup
  • Zend_Measure
  • Zend_Memory
  • Zend_Mime
  • Zend_Navigation
  • Zend_Oauth
  • Zend_OpenId
  • Zend_Paginator
  • Zend_Pdf
  • Zend_ProgressBar
  • Zend_Queue
  • Zend_Reflection
  • Zend_Registry
  • Zend_Rest

  • Zend_Search_Lucene
  • Zend_Serializer
  • Zend_Server
  • Zend_Service
  • Zend_Session
  • Zend_Soap
  • Zend_Tag
  • Zend_Test
  • Zend_Text
  • Zend_TimeSync
  • Zend_Tool
  • Zend_Tool_Framework
  • Zend_Tool_Project
  • Zend_Translate
  • Zend_Uri
  • Zend_Validate
  • Zend_Version
  • Zend_View
  • Zend_Wildfire
  • Zend_XmlRpc
  • ZendX_Console_Process_Unix
  • ZendX_JQuery
  • Ttranslation 27.4% Update 2010-11-28 - Revision 23238 - Version ZF 1.11.x

    14.2. Zend_Application - Быстрый старт

    Есть два пути для начала работы с Zend_Application и выбор одного из них зависит от того, как вы начинаете свой проект. В обоих случаях вы начинаете с создания класса Bootstrap и связанного с ним конфигурационного файла.

    Если вы планируете использовать Zend_Tool для создания своего проекта, то продолжайте читать далее. Если вы добавляете Zend_Application на существующий проект, то можете сразу перейти к следующему разделу.

    14.2.1. Использование вместе с Zend_Tool

    Наиболее быстрый способ начать использование Zend_Application - использовать Zend_Tool для генерации вашего проекта. Он также создаст файл с классом Bootstrap.

    Для того, чтобы создать проект, выполните команду zf на системе семейства *nix:

    zf create project newproject

    Или команду zf.bat на Windows:

    C:> zf.bat create project newproject

    Обе создадут структуру проекта, которая будет выглядеть следующим образом:

    newproject
    |-- application
    |   |-- Bootstrap.php
    |   |-- configs
    |   |   `-- application.ini
    |   |-- controllers
    |   |   |-- ErrorController.php
    |   |   
    `-- IndexController.php
    |   |-- models
    |   `-- views
    |       |-- helpers
    |       
    `-- scripts
    |           |-- error
    |           |   `-- error.phtml
    |           
    `-- index
    |               `-- index.phtml
    |-- library
    |-- public
    |   
    `-- index.php
    `-- tests
        |-- application
        |   
    `-- bootstrap.php
        
    |-- library
        
    |   `-- bootstrap.php
        
    `-- phpunit.xml

    В схеме выше ваш файл загрузки - newproject/application/Bootstrap.php, поначалу он будет выглядеть следующим образом:

    class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
    {
    }

    Также обратите внимание, что был создан конфигурационный файл newproject/application/configs/application.ini. Его содержимое будет следующим:

    [production]
    phpSettings.display_startup_errors 0
    phpSettings
    .display_errors 0
    includePaths
    .library APPLICATION_PATH "/../library"
    bootstrap.path APPLICATION_PATH "/Bootstrap.php"
    bootstrap.class = "Bootstrap"
    resources.frontController.controllerDirectory APPLICATION_PATH "/controllers"

    [staging production]

    [
    testing production]
    phpSettings.display_startup_errors 1
    phpSettings
    .display_errors 1

    [development production]
    phpSettings.display_startup_errors 1
    phpSettings
    .display_errors 1

    Все установки в конфигурационном файле предназначены для использования с Zend_Application и вашим файлом загрузки.

    Еще один файл, на который стоит обратить внимание - newproject/public/index.php, он создает экземпляр Zend_Application и запускает приложение.

    // Указание пути к директории приложения
    defined('APPLICATION_PATH')
        || 
    define('APPLICATION_PATH',
                  
    realpath(dirname(__FILE__) . '/../application'));

    // Определение текущего режима работы приложения
    defined('APPLICATION_ENV')
        || 
    define('APPLICATION_ENV',
                  (
    getenv('APPLICATION_ENV') ? getenv('APPLICATION_ENV')
                                             : 
    'production'));

    /** Zend_Application */
    require_once 'Zend/Application.php';

    // Создание объекта приложения, начальная загрузка, запуск
    $application = new Zend_Application(
        
    APPLICATION_ENV,
        
    APPLICATION_PATH '/configs/application.ini'
    );
    $application->bootstrap()
                ->
    run();

    Для того, чтобы продолжить "быстрый старт", перейдите к разделу про ресурсы.

    14.2.2. Добавление Zend_Application в приложение

    Основные положения работы с Zend_Application довольно просты:

    • Создайте файл application/Bootstrap.php с классом Bootstrap.

    • Создайте конфигурационный файл application/configs/application.ini с базовой конфигурацией, необходимой для Zend_Application.

    • Измените свой файл public/index.php с тем, чтобы использовался Zend_Application.

    Сначала создайте свой загрузочный класс Bootstrap. Для этого создайте файл application/Bootstrap.php со следующим содержимым:

    class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
    {
    }

    Теперь создайте свою конфигурацию. В примерах мы будем использовать конфигурацию в формате INI (разумеется, для своего приложения вы можете использовать другой формат - XML или PHP). Создайте файл application/configs/application.ini и добавьте в него следующее:

    [production]
    phpSettings.display_startup_errors 0
    phpSettings
    .display_errors 0
    includePaths
    .library APPLICATION_PATH "/../library"
    bootstrap.path APPLICATION_PATH "/Bootstrap.php"
    bootstrap.class = "Bootstrap"
    resources.frontController.controllerDirectory APPLICATION_PATH "/controllers"

    [staging production]

    [
    testing production]
    phpSettings.display_startup_errors 1
    phpSettings
    .display_errors 1

    [development production]
    phpSettings.display_startup_errors 1
    phpSettings
    .display_errors 1

    Наконец, приступаем к изменению скрипта public/index.php. Если он не существует, то создайте его, иначе замените его содержимое на следующее:

    // Указание пути к директории приложения
    defined('APPLICATION_PATH')
        || 
    define('APPLICATION_PATH',
                  
    realpath(dirname(__FILE__) . '/../application'));

    // Определение текущего режима работы приложения
    defined('APPLICATION_ENV')
        || 
    define('APPLICATION_ENV',
                  (
    getenv('APPLICATION_ENV') ? getenv('APPLICATION_ENV')
                                             : 
    'production'));

    // Обычно требуется также добавить директорию library/
    // в include_path, особенно если она содержит инсталляцию ZF
    set_include_path(implode(PATH_SEPARATOR, array(
        
    dirname(dirname(__FILE__)) . '/library',
        
    get_include_path(),
    )));

    /** Zend_Application */
    require_once 'Zend/Application.php';

    // Создание объекта приложения, начальная загрузка, запуск
    $application = new Zend_Application(
        
    APPLICATION_ENV,
        
    APPLICATION_PATH '/configs/application.ini'
    );
    $application->bootstrap()
                ->
    run();

    Вы можете заметить, что при установке значения константы режима работы проверяется значение переменной окружения "APPLICATION_ENV". Мы рекомендуем устанавливать ее в своем окружении веб-сервера. В Apache вы можете установить ее либо в своем определении виртуального хоста, либо в своем файле .htaccess. Мы рекомендуем использовать следующее содержимое для вашего файла public/.htaccess:

    SetEnv APPLICATION_ENV development

    RewriteEngine On
    RewriteCond 
    %{REQUEST_FILENAME} -[OR]
    RewriteCond %{REQUEST_FILENAME} -[OR]
    RewriteCond %{REQUEST_FILENAME} -d
    RewriteRule 
    ^.*$ - [NC,L]
    RewriteRule ^.*$ index.php [NC,L]
    [Замечание] Узнайте больше о mod_rewrite

    Приведенные выше правила перезаписи позволяют получить доступ к любому файлу в корневой для веб-документов директории вашего виртуального хоста. Если в ней есть файлы, которые нужно скрыть от посторонних глаз, то вы наверное захотите установить более строгие правила. Перейдите на сайт Apache, чтобы узнать больше о mod_rewrite.

    Теперь вы готовы начать использование Zend_Application.

    14.2.3. Добавление и создание ресурсов

    Если вы следовали инструкциям, приведенным выше, то ваш загрузочный класс должен использовать фронт-контроллер, и когда загрузка запускается, то управление будет передаваться фронт-контроллеру.

    В этом разделе мы рассмотрим добавление двух ресурсов в ваше приложение. Сначала мы установим макет и затем настроим ваш объект вида.

    Одним из стандартных ресурсов, предоставляемых компонентой Zend_Application, является ресурс "layout". Этот ресурс ожидает, что вы определите значения конфигурации, которые затем будут использоваться для конфигурирования вашего экземпляра Zend_Layout.

    Все, что нужно сделать для этого, - обновить конфигурационный файл.

    [production]
    phpSettings.display_startup_errors 0
    phpSettings
    .display_errors 0
    bootstrap
    .path APPLICATION_PATH "/Bootstrap.php"
    bootstrap.class = "Bootstrap"
    resources.frontController.controllerDirectory APPLICATION_PATH "/controllers"
    ADD THE FOLLOWING LINES
    resources
    .layout.layout "layout"
    resources.layout.layoutPath APPLICATION_PATH "/layouts/scripts"

    [staging production]

    [
    testing production]
    phpSettings.display_startup_errors 1
    phpSettings
    .display_errors 1

    [development production]
    phpSettings.display_startup_errors 1
    phpSettings
    .display_errors 1

    Создайте директорию application/layouts/scripts/ и файл в ней layout.phtml, если это не было сделано ранее. Для начала хорошо подходит следующий макет (он также связан с ресурсом вида, описанным ниже):

    <?php echo $this->doctype() ?>
    <html>
    <head>
        <?php echo $this->headTitle() ?>
        <?php echo $this->headLink() ?>
        <?php echo $this->headStyle() ?>
        <?php echo $this->headScript() ?>
    </head>
    <body>
        <?php echo $this->layout()->content ?>
    </body>
    </html>

    Теперь вы должны иметь работающий макет.

    Далее, мы добавим свой ресурс вида. При инициализации вида мы установим HTML DocType и значение по умолчанию для заголовка, используемого в <head> HTML-документа. Это может быть достигнуто добавлением метода в класс Bootstrap:

    class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
    {
        protected function 
    _initView()
        {
            
    // Инициализация вида
            
    $view = new Zend_View();
            
    $view->doctype('XHTML1_STRICT');
            
    $view->headTitle('My First Zend Framework Application');

            
    // Добавление вида в ViewRenderer
            
    $viewRenderer Zend_Controller_Action_HelperBroker::getStaticHelper(
                
    'ViewRenderer'
            
    );
            
    $viewRenderer->setView($view);

            
    // Его возвращение, таким образом, он может быть сохранен загрузчиком
            
    return $view;
        }
    }

    Этот метод будет автоматически выполняться при запуске приложения и он будет обеспечивать инициализацию вашего вида в соответствии с нуждами вашего приложения.

    14.2.4. Следующие шаги с Zend_Application

    Все написанное выше должно научить вас основам использования Zend_Application и создания загрузки вашего приложения. С этого места вы должны перейти к созданию методов ресурсов, или, для максимального повторного использования, плагинов ресурсов. Читайте дальше, чтобы узнать больше!

    digg delicious meneame google twitter technorati facebook

    Comments

    Loading...