2009-07-20 5 views
2

Est-il possible d'utiliser un objet créé lors de la construction d'une classe dans les méthodes membres de cette classe?utiliser un objet créé dans le constructeur de classe dans les méthodes de classe

Ex

<?php 
include ('AClass.php'); 

class Auto_Cart { 
    function Auto_Cart() { 
     $aclass = new AClass(); 
    } 

    function DoSomething() { 
     $aclass->amemberfunction(); 

    } 
} 
?> 

Quand j'appelle DoSomething, il devrait appeler aclass-> amemberfunction()

Je pense que ma syntaxe est erronée, mais peut-être ce n'est pas possible. Peux-tu m'aider?

Merci!

+0

En remarque, il semblerait que vous utilisiez PHP 4; cette version n'est plus maintenue (pas même les correctifs de sécurité); si vous le pouvez, il vaudrait mieux passer à PHP 5.x - si vous n'utilisez pas déjà le code PHP 4 sur PHP 5, ce qui est bien aussi ^^ –

+0

Je vous entends ami :-) mon entreprise attend d'être mise à niveau car ils s'inquiètent que leur code hérité ne fonctionne pas sur un serveur php5. – Tyler

Répondre

6

Vous devez stocker l'instance de AClass comme une variable membre (alias « propriété ») de l'instance de Auto_Cart.

En supposant PHP4 par le style de votre constructeur

class Auto_Cart 
{ 
    /** @var $aclass AClass */ 
    var $aclass; 

    function Auto_Cart() 
    { 
     $this->aclass = new AClass(); 
    } 

    function DoSomething() 
    { 
     $this->aclass->amemberfunction(); 
    } 
} 

Un peu comme votre information, en POO-parler nous appelons cette composition - ce qui signifie un objet crée et stocke automatiquement ou une référence à un autre objet " paresseusement".

+0

+1 pour la terminologie UML. –

1

Vous devez stocker une référence à l'objet afin de l'utiliser plus tard, car il sera perdu lorsque la fonction du constructeur se termine. Essayez le stocker en tant que membre de votre objet Auto_Cart, comme ceci:

<?php 
include ('AClass.php'); 

class Auto_Cart { 
    function Auto_Cart() { 
     $this->aclass = new AClass(); 
    } 

    function DoSomething() { 
     $this->aclass->amemberfunction(); 

    } 
} 
?> 
Questions connexes