Introduction au Zend Framework

 Apprendre Zend Framework

appendix

 Guide de référence 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 61.2% Update 2010-11-28 - Revision 23149 - Version ZF 1.11.x

    14.2. Zend_Application démarrage rapide

    Il existe deux manières d'aborder Zend_Application, elles dépendent de la manière dont vous commencez votre projet. Dans tous les cas, vous devrez créer une classe Bootstrap et un fichier de configuration.

    Si vous souhaitez utiliser Zend_Tool pour créer votre projet, continuez votre lecture. Si vous ajoutez Zend_Application à un projet existant, vous devriez passer à la suite.

    14.2.1. Utiliser Zend_Tool

    La manière la plus rapide d'utiliser Zend_Application est d'appeler Zend_Tool pour créer votre projet. Ceci va aussi créer la classe de Bootstrap.

    Pour créer un projet, éxecutez la commande zf (sur les systèmes *nix) :

    zf create project newproject

    Pour Windows, zf.bat:

    C:> zf.bat create project newproject

    Ceci va créer une structure de projet ressemblant à:

    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

    Dans une telle structure, le bootstrap est newproject/application/Bootstrap.php, et ressemble en premier lieux à ceci:

    class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
    {
    }

    Notez aussi la présence d'un fichier de configuration newproject/application/configs/application.ini, il contient :

    [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

    Tous ces paramètres s'utilisent avec Zend_Application et avec le bootstrap.

    Un autre fichier intéressant est newproject/public/index.php, qui invoque Zend_Application et le démarre.

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

    Pour continuer le guide de démarrage rapide,voyez la section sur les Ressources.

    14.2.2. Ajouter Zend_Application à votre existant

    Les bases de Zend_Application sont très simples :

    • Créez un fichier application/Bootstrap.php contenant une classe Bootstrap.

    • Créez un fichier application/configs/application.ini contenant la configuration de base pour Zend_Application.

    • Modifiez public/index.php afin d'utiliser Zend_Application.

    D'abord, créez la classe Bootstrap class. Dans le fichier application/Bootstrap.php, voici le contenu :

    class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
    {
    }

    Créez maintenant votre configuration. Pour ce tutoriel, nous utilisons une syntaxe INI, bien sûr une syntaxe XML ou PHP est utilisable aussi. Créez donc le fichier application/configs/application.ini, et ajoutez lui ce contenu :

    [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

    Maintenant, modifions le script de démarrage public/index.php. Si le fichier n'existe pas, créez le, et placez ce contenu dedans :

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

    Notez que l'environnement applicatif est défini dans une constante "APPLICATION_ENV". Nous recommandons la spécification d'un tel paramètre dans la configuration générale du serveur web. Pour Apache, vous pouvez utiliser .htaccess si votre serveur le permet. Nous recommandons un fichier public/.htaccess avec le contenu suivant :

    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]
    [Note] Apprenez mod_rewrite

    Les règles de réécriture ci-dessus autorisent l'accès à tout fichier existant dans l'hôte virtuel. S'il existe des fichiers que vous ne voulez pas exposer, utilisez des règles plus restrictives. Le site web d'Apache vous permettra d'en apprendre plus au sujet de mod_rewrite.

    Voila, à partir de maintenant nous sommes prêts à tirer partie de la puissance de Zend_Application.

    14.2.3. Ajouter et créer des ressources

    Si vous avez suivi les instructions jusqu'à maintenant, alors votre classe de bootstrap utilisera le contrôleur frontal et lorsque lancée, lancera le dispatch du contrôleur frontal. En vérité, il va être rapidement nécessaire de rajouter de la configuration, concernant d'autres objets divers (appelés "ressources").

    Nous allons voir ici comment créer et configurer des ressources. D'abord un layout, puis nous personnaliserons un objet de vue.

    Une ressource assez standard proposée par Zend_Application est "layout". Cette ressource attend une configuration qu'elle fera suivre immédiatement à Zend_Layout.

    Pour l'utiliser, vous devrez modifier votre fichier de configuration comme suit:

    [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"

    AJOUTEZ CES LIGNES
    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

    Si ce n'est pas déja fait, créez le dossier application/layouts/scripts/, et le fichier layout.phtml dans ce même dossier. Voici un exemple de script de layout tout à fait classique:

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

    Voila, vous avez un layout fonctionnel.

    Maintenant passons à la vue. Nous voulons un DocType HTML et une valeur de titre par défaut à utiliser dans la partie "head" du HTML. Nous pouvons ordonner ceci en éditant la classe Bootstrap et en ajoutant une méthode.

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

            
    // Ajoutons là au ViewRenderer
            
    $viewRenderer Zend_Controller_Action_HelperBroker::getStaticHelper(
                
    'ViewRenderer'
            
    );
            
    $viewRenderer->setView($view);

            
    // Retourner la vue pour qu'elle puisse être stockée par le bootstrap
            
    return $view;
        }
    }

    Cette méthode va être lancée automatiquement lors du bootstrap et configurera une vue.

    14.2.4. Aller plus loin avec Zend_Application

    Nous vennons de voir comment configurer de manière basique Zend_Application ainsi que les principes du bootstrap. Pour un maximum de réutilisation de code, vous devriez songer à utiliser des plugins de ressources. Continuez à lire la suite !

    digg delicious meneame google twitter technorati facebook

    Comments

    Loading...