2009-04-24 11 views
0

$this->a->b->c->d calling methods from a superclass in phpAppel classe parent De Sous classe PHP

Ive a posé une question sur ce lien que j'ai problème avec cette tecnique, je suis en mesure d'appeler les sous-classes d'une classe

comme celui-ci

$ chesterx-> db-> query();

Je veux faire obtenir une autre classe de sous classe

par exemple

je veux interroger exécuter ce qui était venu de la classe sql

  ROOT 
      | 
sql <--- chesterx ---> db 

Je veux utiliser la classe sql de db

le problème je ne peux pas retourner la classe chesterx de la classe db

/modifier/

J'ai quelques classes comme nouvelles, les membres, les catégories, db et requête

et je l'ai fait comme le lien qui était sur le dessus du sujet

__construct fonction publique () {

function __construct(){ 
     if(!$this->db){          
       include(ROOT."/func/class/bp.db.class.php"); 
       $this->db = new db; 
      } 
if(!$this->chester){           
       include(ROOT."/func/class/bp.chester.class.php"); 
       $this->db = new chester; 
      } 
     } 

i appelé la classe db avec ce code et maintenant je suis en mesure d'appeler et d'utiliser les méthodes de la classe db bien

par exemple

je veux utiliser une méthode de db

cette méthode est contenant une valeur qui revenait une donnée de la méthode de la classe chester

Je voudrais être moi-même clarifier /modifier/

est-il de toute façon à faire cela?

+0

Je vais devoir reformuler un peu votre question. Je ne le comprends pas vraiment. –

+0

Désolé, je n'ai aucune idée de ce que vous demandez ... pourriez-vous clarifier? – Greg

+0

D'accord, un exemple de code serait extrêmement utile ici. – Rob

Répondre

3

Je trouve Ionut de bonne G. solution de Stan pour votre cas, mais vous pourriez aussi envisager la factory/singleton pattern, mais il est bon que si votre classe chesterx est globale, et appelée une seule fois

Vous
3

L'extrait ci-dessous pourrait être une solution, bien que je n'aime pas vraiment la référence circulaire. Essayez-le et utilisez-le comme bon vous semble. Et en passant, ce que vous appelez la classe et la sous-classe sont en fait contenant et contenu la classe.

class Database 
{ 
    public $chesterx; 

    public function __construct($chesterx) 
    { 
     $this->chesterx = $chesterx; 
    } 
} 

class Sql 
{ 
    public $chesterx; 

    public function __construct($chesterx) 
    { 
     $this->chesterx = $chesterx; 
    } 
} 

class Chesterx 
{ 
    public $db; 

    public $sql; 

    public function __construct() 
    { 
     $this->db = new Database($this); 
     $this->sql = new Sql($this); 
    } 
} 
Questions connexes