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

Langage PHP Discussion :

[POO] Insertion d'un objet PDO [PHP 5.3]


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    295
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 295
    Par défaut [POO] Insertion d'un objet PDO
    Bonjour/ bonsoir,

    Sans intégrer un modèle MVC pour l'instant, j'essaye de m'en rapprocher en séparant les couches. j'ai donc 3 fichiers:
    Un premier fichier, qui sera visible par le navigateur et que je pourrai appeler 'vue'
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <?php
    require '../controller/controllerProd.php';
    // affichage d'une liste de produits
    if (!empty ($_GET['production'])) {
        $controlProd->setListe($_GET['production']);
    }
    ?>
    ...
    <div id="content-data">
      <table width="100%" border="0" cellpadding="0" cellspacing="0" id="liste-fiches">
    ...
    Un second fichier, qui pourrait être considéré comme un controller...
    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
    require '../core/connect.php';
    require '../model/ModelProduction.php';
     
    class ControllerProd {
     
        var $modelProduction;
     
        function __construct() {
    // Initialise l'objet modelProduction
            $this->modelProduction = new ModelProduction($PDO); //$PDO est contenu dans le fichier 'connect.php'
        }
     
        /**
         * setListe traite la variable et la donne à getListe
         */
        function setListe($setlabo) {
            $setlabo = !empty ($setlabo) ? filter_var($setlabo, FILTER_SANITIZE_STRING) : NULL;
            $this->modelProduction->getListe($setlabo);
        }
    }
     
    $controlProd = new ControllerProd();
    Et enfin le 3ème fichier, qui va effectuer tout ce qui ressort de mysql
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    class ModelProduction{
     
        private $db;
     
        function __construct($db) {
            $this->db = $db;
        }
     
        function getListe($getLabo){
            //requête pour récupérer une liste de produit en fonction de la variable $_GET
        }
    }
    Mais le serveur ne reconnait pas l'objet $PDO :
    Notice: Undefined variable: PDO in C:\wamp\www\integration\controller\controllerProd.php
    Pourquoi ?
    Merci,

  2. #2
    Modérateur
    Avatar de Bisûnûrs
    Profil pro
    Développeur Web
    Inscrit en
    Janvier 2004
    Messages
    9 931
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2004
    Messages : 9 931
    Par défaut
    Tu as un problème de scope : Il faut que tu passes ton objet PDO en paramètre de ton constructeur de ControllerProd, comme tu le fais pour ModelProduction (bien), ou alors que tu renseignes global $PDO; dans ton constructeur (pas bien).

  3. #3
    Expert confirmé

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Par défaut
    problème de scope
    http://php.net/manual/fr/language.variables.scope.php

    ps : tes classes sont du style PHP 4

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    295
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 295
    Par défaut
    Merci,
    stealth35, à quoi vois-tu que mes classes sont de type PHP 4 ? et comment y remédier ?

  5. #5
    Expert confirmé

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Par défaut
    Citation Envoyé par yann18 Voir le message
    Merci,
    stealth35, à quoi vois-tu que mes classes sont de type PHP 4 ? et comment y remédier ?
    c'est juste parce que t'as mis var et que y'a pas les public devant les méthodes

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    295
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 295
    Par défaut
    C'est bien ce qu'il me semblait...
    merci,

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

Discussions similaires

  1. [POO] Sérialiser un objet PDO dans une classe
    Par __fabrice dans le forum Langage
    Réponses: 9
    Dernier message: 15/09/2008, 22h30
  2. insertion d'un objet 3D dans une video en temps réel
    Par chabfive dans le forum OpenGL
    Réponses: 5
    Dernier message: 02/11/2005, 13h10
  3. [POO] Coordonée d'un objet
    Par JHelp dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 19/04/2005, 16h59
  4. Réponses: 3
    Dernier message: 19/11/2004, 21h48
  5. [POO] Rendre invisible un objet Flash en Javascript
    Par tafkap dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 15/10/2004, 19h39

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