Précédent   Forum des professionnels en informatique > PHP > Langage > Syntaxe
Syntaxe Forum d'entraide sur la syntaxe de PHP et la POO. Avant de poster -> FAQ syntaxe, Cours d'initiation et cours de POO
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 07/10/2011, 11h38   #1
Membre du Club
 
Inscription : mars 2008
Messages : 274
Détails du profil
Informations forums :
Inscription : mars 2008
Messages : 274
Points : 50
Points : 50
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 :
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 :
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 :
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 :
Citation:
Notice: Undefined variable: PDO in C:\wamp\www\integration\controller\controllerProd.php
Pourquoi ?
Merci,
yann18 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/10/2011, 11h42   #2
Modérateur
 
Avatar de Bisûnûrs
 
Josselin
Développeur Web
Inscription : janvier 2004
Messages : 9 050
Détails du profil
Informations personnelles :
Nom : Josselin
Âge : 29
Localisation : France, Rhône (Rhône Alpes)

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : janvier 2004
Messages : 9 050
Points : 12 181
Points : 12 181
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).
Bisûnûrs est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/10/2011, 11h43   #3
Modérateur
 
Inscription : septembre 2010
Messages : 7 131
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 131
Points : 8 491
Points : 8 491
problème de scope
http://php.net/manual/fr/language.variables.scope.php

ps : tes classes sont du style PHP 4
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/10/2011, 16h00   #4
Membre du Club
 
Inscription : mars 2008
Messages : 274
Détails du profil
Informations forums :
Inscription : mars 2008
Messages : 274
Points : 50
Points : 50
Merci,
stealth35, à quoi vois-tu que mes classes sont de type PHP 4 ? et comment y remédier ?
yann18 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/10/2011, 16h03   #5
Modérateur
 
Inscription : septembre 2010
Messages : 7 131
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 131
Points : 8 491
Points : 8 491
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
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/10/2011, 16h06   #6
Membre du Club
 
Inscription : mars 2008
Messages : 274
Détails du profil
Informations forums :
Inscription : mars 2008
Messages : 274
Points : 50
Points : 50
C'est bien ce qu'il me semblait...
merci,
yann18 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 01h13.


 
 
 
 
Partenaires

Hébergement Web