IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

MVC PHP Discussion :

Conseils pour débutant Zend MVC


Sujet :

MVC PHP

  1. #1
    Membre confirmé
    Profil pro
    csdcsdc
    Inscrit en
    Juin 2004
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : csdcsdc

    Informations forums :
    Inscription : Juin 2004
    Messages : 83
    Par défaut Conseils pour débutant Zend MVC
    Bonjour,

    je viens du monde Microsoft (dotnet) et depuis peu, je me mets à PHP Zend.
    Après avoir lu le livre de Pauli sur Zend et qques didacticiels, je tente de démarrer un projet.

    Mais voila, je ne suis pas très sur de la pertinence de mon code, tant au niveau de l'emploi de certaines fonctions que de leur ordre d'appel.

    Le squelette de mon code fonctionne (a peu près) bien que le routeur n'arrive pas à accéder ma page de login.

    Mais j'aimerais surtout des conseils sur le contenu du bootstrap ci dessous.

    Bien sur, le code de ce bootstrap est très général.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
     
    <?php
    /**
     * Bootstap file for Immogestion
     *
     * @author  Serge Fournier, safournier@free.fr
     * @version 
     */
     
    /**
     * fonction de renvoi vers une page d'erreur
     * en cas d'erreur bloquante
     */
    /*
    set_exception_handler('bootstrapError');
    
    function bootstrapError()
    {
        exit("Une erreur grave est survenue");
    }
    */
     
    ini_set ( 'error_reporting', E_ALL );
     
     
    // ** VARIABLES ***************************************************************
    // definition de constantes pour l'application
    define ( 'APP_MODE', 'development' );
    define ( 'CACHE_LIFETIME', 3600 );
     
     
    // ** AUTOLOAD ****************************************************************
    // Utilisation de Zend_Loader
    require_once 'Zend/Loader/Autoloader.php';
    // Chargement automatique des classes
    Zend_Loader_Autoloader::getInstance ()->setFallbackAutoloader ( true );
     
    // ** PATHS *******************************************************************
    $rootPath = dirname ( dirname ( __FILE__ ) );
    // 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') : 'development'));
    // Ensure library/ is on include_path
    set_include_path(implode(PATH_SEPARATOR, array(
        realpath(APPLICATION_PATH . '/../library'),
        get_include_path(),
    )));
     
     
    // ** CONFIG ******************************************************************
    // Recuperation des objets de configuration
    $configApplication = new Zend_Config_Ini ( APPLICATION_PATH . '/configs/application.ini', APP_MODE );
    $configSession = new Zend_Config_Ini ( APPLICATION_PATH . '/configs/session.ini', APP_MODE );
     
     
    // ** SESSION *****************************************************************
    // Configuration de la session (imperativement avant son demarrage)
    if (! Zend_Session::isStarted ()) {
    	Zend_Session::setOptions ( $configSession->toArray () );
    	Zend_Session::setOptions ( array ('save_path' => $rootPath . $configSession->save_path ) );
    	Zend_Session::start();
    }
    $session = new Zend_Session_Namespace('lob');
    Zend_Registry::set('lob', $session);
    // Partage (et creation ou restauration) de l'objet de session dans le registre
    // Ce premier appel a new Zend_Session_Namespace demarre la session PHP
    Zend_Registry::set ( 'session', $session );
     
     
    // ** LOG *********************************************************************
    $log = new Zend_Log ( $writer = new Zend_Log_Writer_Stream ( $rootPath . $configApplication->logfile ) );
    /*
    // Ajout de parametres a enregistrer, adresse ip et navigateur
    $log->setEventItem ( 'user_agent', $_SERVER ['HTTP_USER_AGENT'] );
    $log->setEventItem ( 'client_ip', $_SERVER ['REMOTE_ADDR'] );
    $log->addPriority ( 'USER', 8 );
    // Ajout des parametres enregistres dans le format du journal a ecrire
    $format = '%client_ip% %user_agent%' . Zend_Log_Formatter_Simple::DEFAULT_FORMAT;
    // Ajout du format du journal au log
    $writer->setFormatter ( new Zend_Log_Formatter_Simple ( $format ) );
    Zend_Registry::set ( 'log', $log );
    */
     
    // ** CACHE *******************************************************************
    $frontendOptions = array(
    	'lifetime' => CACHE_LIFETIME,
    	'automatic_serialization' => true
    );
    $backendOptions = array(
    	// Répertoire où stocker les fichiers de cache
        'cache_dir' =>  $rootPath . $configSession->save_path . '/'
    );
    // créer un objet Zend_Cache_Core
    $cacheInstance = Zend_Cache::factory('Core', 'File', $frontendOptions, $backendOptions);
     
     
    // ** LOCALE ******************************************************************
    // locale pour la gestion de la langue
    //Zend_Locale::$compatibilityMode = false;
    $locale = new Zend_Locale ( ); // locale par defaut : navigateur utilise, sinon machine hote
    Zend_Registry::set ( 'Zend_Locale', $locale );
    // on attache le composant cache a Zend_Locale
    Zend_Locale::setCache ( $cacheInstance );
     
     
    // ** DATES *******************************************************************
    date_default_timezone_set ( 'Europe/Paris' );
    Zend_Date::setOptions ( array ('cache' => $cacheInstance ) );
     
     
    // ** DATABASE ****************************************************************
    try {
    	$db = Zend_Db::factory ( $configApplication->databaseImmo );
    	$db->query ( "SET NAMES 'UTF8'" );
    	$db->getConnection ();
     
    	// Passage de la connexion a toutes les classes passerelles
    	Zend_Db_Table_Abstract::setDefaultAdapter ( $db );
    } catch ( Zend_Db_Exception $e ) {
    	// on passe l'exception sous silence, elle sera geree dans le systeme MVC plus tard 
    }
    // activation du cache des meta donnees des passerelles
    Zend_Db_Table_Abstract::setDefaultMetadataCache ( $cacheInstance );
     
     
    // ** MVC *********************************************************************
    // Set up the front controller and dispatch
    try {
    	// Configuration du controleur frontal
    	$front = Zend_Controller_Front::getInstance ();
    	$front->setControllerDirectory ( APPLICATION_PATH . '/controllers' );
    	$front->throwExceptions ( false ); // par defaut
     
    	// propagation de parametres dans le systeme MVC
    	$front->setParam ( 'debug', $configApplication->debug );
    	$front->setParam ( 'locale', $locale );
    	$front->setParam ( 'config', $configApplication );
     
    	// enregistrement du plugin de sauvegarde de la page precedente
    	//$front->registerPlugin ( new Zend_Controller_Plugins_Session ( ) );
     
    	// Ajout du chemin des aides d'action dans le gestionnaire d'aides MVC
    	Zend_Controller_Action_HelperBroker::addPrefix ( 'Zend_Controller_ActionHelpers' );
     
    	// Configuration d'un entete de reponse HTTP global
    	$response = new Zend_Controller_Response_Http ( );
    	$response->setRawHeader ( 'Content-type: text/html; charset=utf-8' );
     
    	// passage de la reponse configuree au systeme MVC
    	$front->setResponse ( $response );
     
    	// recuperation du routeur
    	$router = $front->getRouter ();
    	Zend_Layout::startMvc ( array (APPLICATION_PATH . '/views/scripts' ) );
     
     
    	// ************************* VIEW ******************************************
    	$view = new Zend_View ( );
    	$view->setEncoding ( 'UTF-8' );
    	$view->strictVars ( ( bool ) $configApplication->debug );
     
    	// Recuperation de l'aide de rendu automatique de vues : viewRenderer
    	$viewRenderer = Zend_Controller_Action_HelperBroker::getStaticHelper ( 'ViewRenderer' );
     
    	// Passage de notre vue a ViewRenderer
    	$viewRenderer->setView ( $view );
     
     
    	// ** DISPATCH ****************************************************************
    	try {
    		$front->dispatch ();
    	} catch ( Zend_Exception $e ) {
    		$log->crit ( $e );
    	}
     
    // Handle controller exceptions (usually 404)
    } catch ( Zend_Controller_Exception $e ) {
    	include 'errors/404.phtml';
     
    // Handle all other exceptions
    } catch ( Exception $e ) {
    	include 'errors/500.phtml';
     
    }
    /*
    // ** APPLICATION *************************************************************
    // 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();
    */
    La structure des dossiers du projet est en attachement.

    Merci pour tout conseils.
    Images attachées Images attachées  

  2. #2
    Membre chevronné Avatar de manuscle
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2004
    Messages
    488
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2004
    Messages : 488
    Par défaut
    Salut,

    Tu utilise quelle version de ZF?
    En fait tu as repris et adapté le bootstrap du bouquin?

    Car le livre de julien pauli (bien developper en php) utilise la version 1.8 de ZF

    Du coup, avec la version 1.9 ou 1.10 le bootstrap a bien changé et tu dois utiliser Zend_Application. Si tu ne sais pas comment faire, lis le tuto :
    http://julien-pauli.developpez.com/t...d-application/

  3. #3
    Membre confirmé
    Profil pro
    csdcsdc
    Inscrit en
    Juin 2004
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : csdcsdc

    Informations forums :
    Inscription : Juin 2004
    Messages : 83
    Par défaut
    Bonjour et merci pour la réponse.

    BIEN VU.

    J'utilise la version 1.9 du zf avec l'exemple du livre (un peu extrapolé).

    Donc je vais commencer par lire l'article.

    Merci encore.

  4. #4
    Membre chevronné Avatar de manuscle
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2004
    Messages
    488
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2004
    Messages : 488
    Par défaut
    De rien!

    Par contre ça veut pas dire que son bouquin est obsolète, bien au contraire! J'ai appris Zend Framework et surtout à bien développer grâce à ce bouquin. Il est encore d'actualité à part cette histoire de bootstrap.

    Bon courage!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [CS5] Conseil pour débutant
    Par bastouneco dans le forum Flash
    Réponses: 0
    Dernier message: 01/06/2011, 11h29
  2. Réponses: 0
    Dernier message: 12/09/2010, 13h20
  3. [AJAX] Conseil pour débutant Ajax
    Par arthuro45 dans le forum AJAX
    Réponses: 3
    Dernier message: 27/07/2009, 16h01
  4. RoR & Aptana - conseils pour débutant
    Par san1981 dans le forum Ruby on Rails
    Réponses: 4
    Dernier message: 22/11/2007, 12h25
  5. Demande conseils pour débutant
    Par barbu44 dans le forum Access
    Réponses: 3
    Dernier message: 05/12/2006, 23h43

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo