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 :

Structure php 5 vers zend framework(apprentissage)


Sujet :

MVC PHP

  1. #1
    Membre confirmé Avatar de gtraxx
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2006
    Messages
    1 043
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 043
    Points : 570
    Points
    570
    Par défaut Structure php 5 vers zend framework(apprentissage)
    Bonjour à tous, je suis un nouvel utilisateur du zend framework et j'ai quelque question même si les tutos sont déjà bien détaillé .
    En faites je me demandais comment, quel méthode appliqué pour modifier ma manière de travaillé afin d'être dans le tempo du zend

    Par exemple, pour un formulaire simple j'écrivais comme ceci :

    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
    class usersFrontend{
    	/**
    	 *
    	 *
    	 * @var void
    	 */
    	public $smarty;
    	/**
    	 *
    	 *
    	 * @var string
    	 */
    	public $FirstName;
    	/**
    	 * 
    	 *
    	 * @var string
    	 */
    	public $Surname;
    	/**
    	 * construct class
    	 *
    	 */
    	function __construct(){
    		$this->smarty = new MySmarty();
    		$this->FirstName = $_POST['FirstName'];
    		$this->Surname = $_POST["Surname"];
    	}
    function insertMachin(){
    		global $connStr,$user,$pass;
    			$dbh = new PDO($connStr, $user, $pass);
    				$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    				$stmt = $dbh->prepare("INSERT INTO db_machin (firstname, surname) VALUES(:Firstname, :Surname)");
    				$stmt->bindParam(':Firstname', $this->Firstname, PDO::PARAM_STR);
    				$stmt->bindParam(':Surname', $this->Surname, PDO::PARAM_STR);
    				$stmt->execute();
    				$stmt->closeCursor();
    				$stmt = null; 
    	}
    function SendUsersdansdb(){
     
    		if (isset($this->FirstName)) {
    		   $this->insertMachin();
                   }
     
    }
    Mais pour écrire un truc comme ceci dans une appli zend MVC structuré, je suppose qu'il faut écrire la partie qui effectue les "post" dans controlleur et ce qui concerne mon insert dans model par exemple.

    Bon l'exemple étais un peux mais bon je suis habitué à utiliser PDO + SMARTY + class php5 classique.

    Mais faut dire que je suis un peux paumer avec zend qui utilise ses propres fonctions (class ), style de codage.
    J'ai vu trainer des isValid , et j'en passe

    Ma question comment écrire mon ti script si plus haut dans un controller zend par exemple
    Au petit déjeuner, je prend du PHP et au souper du jQuery.
    AFUP 2009 : Bien optimiser son code pour le référencement
    Mon projet open source de librairie PHP 5: magix cjquery

  2. #2
    Membre du Club
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Avril 2006
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Luxembourg

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2006
    Messages : 45
    Points : 61
    Points
    61
    Par défaut
    Bonjour,

    - Dans le bootstrap:
    *tu établie ta connexion
    *tu l'enregistre dans le registre (Zend_Registry)

    - Dans le répertoire modèle tu créer un modèle utilisateur (Zend_Db_Table)

    - puis dans un contrôleur nommé Utilisateur tu fait une action (Zend_Controller):
    *ajouter
    *supprimer

    dans l'action ajouter:
    * tu rend un formulaire via la vue associer
    * ce formulaire appel ce même contrôleur / action
    * tu contrôle si les données sont envoyé via post ou get
    * si elles sont envoyés tu récupère la connexion enregistrer dans le registry
    * tu l'enregistre les infos via ton modèle

    Voila pour la théorie (de base, on peut fortement améliorer avec des filtre etc...)

  3. #3
    Membre confirmé Avatar de gtraxx
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2006
    Messages
    1 043
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 043
    Points : 570
    Points
    570
    Par défaut
    merci pour ses précieux conseil, j'ai cependant un souci avec le chargement de la config.
    J'ai créer dans application un fichier ini pour initialiser les paramètre sgbd que j'ai appellé dans la fonction initDb mais un gros warning fais son entrée :
    Fatal error: Uncaught exception 'Zend_Config_Exception' with message 'parse_ini_file(zend_config_ini.ini) [<a href='function.parse-ini-file'>function.parse-ini-file</a>]: failed to open stream: No such file or directory' in /Applications/MAMP/htdocs/zend-encoder/lib/Zend/Config/Ini.php:117 Stack trace: #0 /Applications/MAMP/htdocs/zend-encoder/application/Initializer.php(123): Zend_Config_Ini->__construct('zend_config_ini...', 'prod', Array) #1 /Applications/MAMP/htdocs/zend-encoder/application/Initializer.php(107): Initializer->initDb() #2 /Applications/MAMP/htdocs/zend-encoder/lib/Zend/Controller/Plugin/Broker.php(237): Initializer->routeStartup(Object(Zend_Controller_Request_Http)) #3 /Applications/MAMP/htdocs/zend-encoder/lib/Zend/Controller/Front.php(896): Zend_Controller_Plugin_Broker->routeStartup(Object(Zend_Controller_Request_Http)) #4 /Applications/MAMP/htdocs/zend-encoder/application/bootstrap.php(22): Zend_Controller_Front->dispatch() #5 /Applications/MAMP/htdocs/zend-encoder/public/index.php(8): require('/App in /Applications/MAMP/htdocs/zend-encoder/lib/Zend/Config/Ini.php on line 117
    J'ai créer un fichier ini avec ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    [prod]
    database.adapter = pdo_mysql
    database.host = localhost 
    database.user = root
    database.pass = root
    database.name = zendencoder
    [dev : prod]
    database.host = localhost
    database.pass = root
    et je l'ai appellé comme ceci dans initializer.php :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    public function initDb()
        {
        	$configFile['nestSeparator'] = ':';
    		$configFile = new Zend_Config_Ini('zend_config_ini.ini', 'prod' ,$configFile);
    		return $configFile;
        }
    Pensez vous que ce n'est qu'un simple probleme de chemin ?
    Ou aussi un mauvais endroit pour déclarer les paramétres SGBD
    Au petit déjeuner, je prend du PHP et au souper du jQuery.
    AFUP 2009 : Bien optimiser son code pour le référencement
    Mon projet open source de librairie PHP 5: magix cjquery

  4. #4
    Membre du Club
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Avril 2006
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Luxembourg

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2006
    Messages : 45
    Points : 61
    Points
    61
    Par défaut
    No such file or directory
    Oui, je pense que c'est le chemin.

  5. #5
    Membre expert
    Avatar de Alexandre T
    Homme Profil pro
    Chef de projets AMO
    Inscrit en
    Mai 2002
    Messages
    1 213
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Chef de projets AMO
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 213
    Points : 3 001
    Points
    3 001
    Par défaut
    Juste pour préciser que personnellement je ne place pas les paramètres de connexion dans le registre (Zend_Registry), mais, j'initialise plutôt l'adaptateur par défaut, qui fonctionne selon le pattern du singleton.

    Voici le code qui initialise ma base de données dans mon plugin d'initialisation :
    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
     
    /**
         * Initialize data bases
         * 
         * @return void
         */
        public function initDb() {
            // chargement de la configuration
            try {
                //Chargement du fichier de configuration
                $configuration = new Zend_Config_Ini ( $this->_root . '/application/configuration.ini', 'general' );
                // Mise en place de la BDD
                $db = Zend_Db::factory ( $configuration->db );
                // Mise en place de l'adaptateur par défaut            
                Zend_Db_Table::setDefaultAdapter ( $db );
            } catch ( Zend_Db_Exception $e ) {
                $message = 'Erreur dans la configuration de la base de données';
                if ($this->_env == self::ENVIRONNEMENT_DEVELOPPEMENT) {
                    throw new Zend_Exception ( $message, $e->getCode () );
                } else {
                    die ( 'Erreur fatale :' . $message );
                }
            } catch ( Zend_Config_Exception $e ) {
                $message = 'Erreur dans le fichier de configuration';
                if ($this->_env == self::ENVIRONNEMENT_DEVELOPPEMENT) {
                    throw new Zend_Exception ( $message, $e->getCode () );
                } else {
                    die ( 'Erreur fatale :' . $message );
                }
            }
        }
    J'espère que cela t'éclaire.
    Alexandre Tranchant
    Chef de projet AMO pour le Cerema.
    Retrouvez mes articles sur PHP et Symfony

Discussions similaires

  1. Débutante en PHP 5 et Zend Framework
    Par élève_ingénieur dans le forum Zend Framework
    Réponses: 3
    Dernier message: 12/06/2010, 11h06
  2. Réponses: 5
    Dernier message: 21/12/2007, 23h33

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