Page 1 sur 1

Gestion extends classes

Posté : 16 nov. 2006, 19:53
par ramy
Bonjour,

je réalise en ce moment la réécriture de la logique métier de mon site et je rencontre quelques problemes. Precedemment, la liaison avec la base de données été gérée par la classe BD. Maintenant, dans l'optique d'une structuration MVC, je cherche faire de cette classe une extension de la classe modele. Cette classe est utilisée dans le controleur sous la forme d'un objet $BD protégé que les classes enfantes utilise pour communiquer avec la base de données. Mon probleme est que je n'arrive pas à utiliser les méthodes de BD depuis le controleur. Exemple :

Code : Tout sélectionner

class Module { // ... function BD($Table) { if ($BD = new BD($Table)) return $BD; return false; } } class BD extends Module { function __construct($Table) { // ... self::SelectionTable($Table); } // Méthodes sur la table ... } class Controleur { // ... protected $BD; function __construct() { // ... $this->BD = new Module::BD('Controleur'); } } class exemple extends Controleur { // ... parent::$BD->requete('select * from exemple'); // ... }
J'ai réduit le code par soucis de lisibilité. Dans cet exemple, php me répond que la méthode requete n'exsite pas pour $BD dans la classe 'exemple'.

Avez-vous une idée de pourquoi?
Merci de votre aide.

Posté : 16 nov. 2006, 22:31
par titerm
class Controleur {
   // ...
   protected $BD;

   function __construct() {
      // ...
      $this->BD = new Module::BD('Controleur'); <<====== Erreur
   }
} 
De 2 choses l'une soit tu fais un new Module et tu ne donne pas de methode derrière, l'appel au constructeur de Module sera fait implicitement.
Soit tu appel une methode que tu aura déclaré static, et tu ne fais donc pas de new.