2010-08-08 11 views
2

Je suis un nouveau gars dans les concepts PHP OOP. Une des premières choses qui a attiré mon attention que je ne peux pas inclure un script php à plusieurs classes juste en l'écrivant une fois au début du script. Je veux direPHP inclure en dehors de la classe seulement Une fois

<?php 
include 'var.php'; 
class userSession{ 
    /* all the code */ 
    public function getVariables(){ 
    /* use of variables which are inside var.php */ 
    } 
    public function getOtherVariables(){ 
    /* use of variables which are inside var.php */ 
    } 
} 
?> 

cela ne fonctionne pas.

Je dois le faire -

<?php 
    class userSession{ 
     /* all the code */ 
     public function getVariables(){ 
     include 'var.php'; 
     /* use of variables which are inside var.php */ 
     } 
     public function getOtherVariables(){ 
     include 'var.php'; 
     /* use of variables which are inside var.php */ 
     } 
    } 
    ?> 

Tout ce que je suis absent ??

+0

Quels sont les contenus de var.php. –

+1

Dans votre premier exemple, vous incluez le contenu de var.php dans l'espace global. Dans le deuxième exemple, vous incluez le contenu de var.php dans l'espace local pour les méthodes de votre classe. Qu'est-ce que vous essayez réellement de faire ici? –

+0

Supposons seulement deux variables. ' ' –

Répondre

4

Si les variables sont définies dans l'espace global, alors vous devez les référencer dans l'espace global au sein de vos méthodes de classe:

include 'var.php'; 
class userSession{ 
    /* all the code */ 
    public function getVariables(){ 
    global $var1, $var2; 
    echo $var1,' ',$var2,'<br />'; 
    $var1 = 'Goodbye' 
    } 
    public function getOtherVariables(){ 
    global $var1, $var2; 
    echo $var1,' ',$var2,'<br />'; 
    } 
} 

$test = new userSession(); 
$test->getVariables(); 
$test->getOtherVariables(); 

Ce n'est pas une bonne idée. L'utilisation de variables globales est généralement une mauvaise pratique, et une indication que vous ne comprenez pas vraiment les principes de la POO.

Dans votre deuxième exemple, vous définissez les variables dans l'espace local pour les différentes méthodes

class userSession{ 
    /* all the code */ 
    public function getVariables(){ 
    include 'var.php'; 
    echo $var1,' ',$var2,'<br />'; 
    $var1 = 'Goodbye' 
    } 
    public function getOtherVariables(){ 
    include 'var.php'; 
    echo $var1,' ',$var2,'<br />'; 
    } 
} 

$test = new userSession(); 
$test->getVariables(); 
$test->getOtherVariables(); 

Parce que chaque variable est définie indépendamment dans l'espace local de méthode, en changeant var1 $ en getVariables() n'a pas effet sur var1 $ en getOtherVariables()

Une troisième alternative consiste à définir vos variables comme des propriétés de classe:

class userSession{ 
    include 'var.php'; 
    /* all the code */ 
    public function getVariables(){ 
    echo $this->var1,' ',$this->var2,'<br />'; 
    $this->var1 = 'Goodbye' 
    } 
    public function getOtherVariables(){ 
    echo $this->var1,' ',$this->var2,'<br />'; 
    } 
} 

$test = new userSession(); 
$test->getVariables(); 
$test->getOtherVariables(); 

Cette définit les variables comme des propriétés dans l'espace userClass, de sorte qu'elles peuvent être accédées par toutes les méthodes dans l'instance de userClass. Notez l'utilisation de $ this-> var1 plutôt que $ var1 pour accéder aux propriétés. Si vous avez plusieurs instances de userClass, les propriétés dans chaque instance peuvent être différentes, mais dans chaque instance, les propriétés sont cohérentes dans toutes les méthodes de cette instance.

+1

Je reçois une erreur d'analyse (inattendue T_INCLUDE) pour la troisième alternative. :( – Dian

Questions connexes