2010-11-11 4 views
-2

La fonction define("CONSTANT", "Hello world."); de PHP est la fonction globale que vous pouvez appeler même si vous êtes dans la classe ou la fonction. J'ai l'exemple ci-dessous et disons à l'intérieur de la classe que je déclare une variable globale supposée être comme globale globale $allForm;php global excution à l'intérieur de la classe

ma question comment puis-je appeler le $ this-> allForm à l'intérieur de validate() sans intégrer le $ this-> validate() dans le __construct?

$authentication = new authentication("1", "nanat", "amew", "yes"); // declared define constant 

class authentication extends mySession { 
    private $allForm; //variable 

    public function __construct($submit, $user, $password, $remmeber) { 
     $this->allForm = array('giSub' => $submit, 'giUser' => $user, 'giPas' => $password, 'giRemmeb' => $remmeber); //execute 
     // $this->validate(); //not execute 
    // $this->validateOne(); //not execute 
    // $this->validateTwo() //not execute 
    } 

    private function validate() { 
     var_dump($this->allForm); // return null 
     // statement... 
    } 

private function validateOne() { 
     var_dump($this->allForm); // return null 
     // statement... 
    } 

private function validateTwo() { 
     var_dump($this->allForm); // return null 
     // statement... 
    } 


} 

ce que je veux c'est .. est-ce possible?

class authentication extends mySession { 
    private $allForm; //global variable.. 


    public function __construct($submit, $user, $password, $remmeber) { 
     $this->allForm = array('giSub' => $submit, 'giUser' => $user, 'giPas' => $password, 'giRemmeb' => $remmeber); //execute 
    } 

    private function validate() { 
     var_dump($this->allForm); // return true 
     // statement... 
    } 

private function validateOne() { 
     var_dump($this->allForm); // return true 
     // statement... 
    } 

private function validateTwo() { 
     var_dump($this->allForm); // return true 
     // statement... 
    } 


} 
+0

Désolé, quoi? Pourriez-vous essayer d'expliquer cela par exemple? – deceze

+0

Que réaliserait-il en faisant cela? Vous avez encapsulé votre code dans une classe en utilisant le '$ allForm' privé. Excellent. – Michael

+0

est-il un moyen que vous pouvez définir une variable globale sans out en appelant le $ this-> validate() ;? afin d'exécuter le $ this-> allForm? Imagerie vous avez la fonction 5 alors vous incluez la fonction all à l'intérieur de __construct afin d'exécuter this-> allForm? – mapet

Répondre

2

Vous n'êtes pas obligé d'appeler immédiatement $this->validate() de la construction. Si vous remplissez $this->allForm dans le constructeur, la valeur continuera à exister lorsque vous appelez des méthodes de classe. Supprimer cette $this->validate() de __construct() et vous pouvez appeler la méthode validate() manuellement:

$authentication = new authentication("1", "nanat", "amew", "yes"); 
$authentication->validate(); 

Basé sur la façon dont vous avez posé cette question, qui est la meilleure réponse que je peux fournir.

+1

+1 pour tenter de répondre à cette question. Notez que vous devez marquer la méthode 'validate' comme publique pour faire ce que vous suggérez. – deceze

+0

Y at-il une fonction comme php difine .. à l'intérieur de la classe? peut être une variable globale et peut accéder à toutes les fonctions de? sans se lier les uns les autres? – mapet

+0

@mapet Désolé, vos questions n'ont aucun sens. Pourriez-vous mettre à jour votre question avec un code qui démontre ce que vous * voudriez faire *? Le code n'a pas besoin de fonctionner, il devrait simplement montrer le résultat que vous souhaitez obtenir. – deceze

1

$allForm est déclaré comme membre private de class authentication. Cela signifie que vous pouvez uniquement accéder à $allForm à partir du code à l'intérieur declass authentication. Si vous souhaitez accéder à la classe $allForm à partir de en dehors de la classe, vous devez le déclarer comme public.

Vous pouvez également appliquer le même raisonnement à la méthode validate(). Si vous voulez être en mesure d'appeler de l'extérieur la classe, puis déclarer juste public:

class authentication extends mySession { 
    public $allForm; 

    ... 

    public function validate() { 
     ... 
    } 
} 

Maintenant, vous pouvez faire des choses comme ça ....

$authentication = new authentication("1", "nanat", "amew","yes"); 
$authentication->validate(); 

OU

$authentication->allForm = array(....); 
Questions connexes