Wprowadzenie do Zend Framework

     Nauka Zend Framework

    appendix

     Przewodnik po Zend Framework


  • 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
  • Translation 21.3% Update 2011-11-16 - Revision 24356 - Version ZF 1.11.x

    12.2. Zend_Application Quick Start

    There are two paths to getting started with Zend_Application, and they depend on how you start your project. In each case, you always start with creating a Bootstrap class, and a related configuration file.

    If you plan on using Zend_Tool to create your project, continue reading below. If you will be adding Zend_Application to an existing project, you'll want to skip ahead.

    12.2.1. Using Zend_Tool

    The quickest way to start using Zend_Application is to use Zend_Tool to generate your project. This will also create your Bootstrap class and file.

    To create a project, execute the zf command (on *nix systems):

    zf create project newproject

    Or the Windows zf.bat command:

    C:> zf.bat create project newproject

    Both will create a project structure that looks like the following:

    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

    In the above diagram, your bootstrap is in newproject/application/Bootstrap.php, and looks like the following at first:

    class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
    {
    }

    You'll also note that a configuration file, newproject/application/configs/application.ini, is created. It has the following contents:

    [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

    All settings in this configuration file are for use with Zend_Application and your bootstrap.

    Another file of interest is the newproject/public/index.php file, which invokes Zend_Application and dispatches it.

    // 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'));

    /** 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();

    To continue the quick start, please skip to the Resources section.

    12.2.2. Adding Zend_Application to your application

    The basics of Zend_Application are fairly simple:

    • Create an application/Bootstrap.php file, with the class Bootstrap.

    • Create an application/configs/application.ini configuration file with the base configuration necessary for Zend_Application.

    • Modify your public/index.php to utilize Zend_Application.

    First, create your Bootstrap class. Create a file, application/Bootstrap.php, with the following contents:

    class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
    {
    }

    Now, create your configuration. For this tutorial, we will use an INI style configuration; you may, of course, use an XML, JSON, YAML, or PHP configuration file as well. Create the file application/configs/application.ini, and provide the following contents:

    [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

    Now, let's modify your gateway script, public/index.php. If the file does not exist, create it; otherwise, replace it with the following contents:

    // 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'));

    // Typically, you will also want to add your library/ directory
    // to the include_path, particularly if it contains your ZF installed
    set_include_path(implode(PATH_SEPARATOR, array(
        
    dirname(dirname(__FILE__)) . '/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();

    You may note that the application environment constant value looks for an environment variable "APPLICATION_ENV". We recommend setting this in your web server environment. In Apache, you can set this either in your vhost definition, or in your .htaccess file. We recommend the following contents for your public/.htaccess file:

    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]
    [Notatka] Learn about mod_rewrite

    The above rewrite rules allow access to any file under your virtual host's document root. If there are files you do not want exposed in this way, you may want to be more restrictive in your rules. Go to the Apache website to learn more about mod_rewrite.

    At this point, you're all set to start taking advantage of Zend_Application.

    12.2.3. Adding and creating resources

    If you followed the directions above, then your bootstrap class will be utilizing a front controller, and when it is run, it will dispatch the front controller. However, in all likelihood, you'll need a little more configuration than this.

    In this section, we'll look at adding two resources to your application. First, we'll set up your layouts, and then we'll customize your view object.

    One of the standard resources provided with Zend_Application is the "layout" resource. This resource expects you to define configuration values which it will then use to configure your Zend_Layout instance.

    To use it, all we need to do is update the configuration file.

    [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

    If you haven't already, create the directory application/layouts/scripts/, and the file layout.phtml within that directory. A good starting layout is as follows (and ties in with the view resource covered next):

    <?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>

    At this point, you will now have a working layout.

    Now, we'll add a custom view resource. When initializing the view, we'll want to set the HTML DocType and a default value for the title to use in the HTML head. This can be accomplished by editing your Bootstrap class to add a method:

    class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
    {
        protected function 
    _initView()
        {
            
    // Initialize view
            
    $view = new Zend_View();
            
    $view->doctype('XHTML1_STRICT');
            
    $view->headTitle('My First Zend Framework Application');

            
    // Add it to the ViewRenderer
            
    $viewRenderer Zend_Controller_Action_HelperBroker::getStaticHelper(
                
    'ViewRenderer'
            
    );
            
    $viewRenderer->setView($view);

            
    // Return it, so that it can be stored by the bootstrap
            
    return $view;
        }
    }

    This method will be automatically executed when you bootstrap the application, and will ensure your view is initialized according to your application needs.

    12.2.4. Next steps with Zend_Application

    The above should get you started with Zend_Application and creating your application bootstrap. From here, you should start creating resource methods, or, for maximum re-usability, resource plugin classes. Continue reading to learn more!

    digg delicious meneame google twitter technorati facebook

    Comments

    Loading...