2010-10-05 4 views
1

Je viens de commencer l'étude de la classe et de l'objet en php. J'ai un très petit programme qui est comme suit.Pourquoi les variables de classe ne stocke pas de valeurs dans la classe php?

<?PHP 
class GetUserPermissions 
{ 
public $tab1; 
public $tab2; 
public $tab3; 
public $tab4; 

public function setMainPagePermissions() 
{ 
    try 
    {     
     $this->SetPermissionsSelection(1,0,5,0); 
    } 
    catch(Exception $e) 
    { 
     echo $e->getMessage(); 
    } 
} 

public function SetPermissionsSelection($a,$b,$c,$d) 
{  
    $this->$tab1=$a; 
    $this->$tab2=$b; 
    $this->$tab3=$c; 
    $this->$tab4=$d; 
} 

public function gettab1Status() 
{ 
    return $this->$tab1; 
} 
    public function gettab2Status() 
    { 
    return $this->$tab2; 

} 
public function gettab3Status() 
{ 
    return $this->$tab3; 

} 
public function gettab4Status() 
{ 
    return $this->$tab4; 
} 

} 

$test=new GetUserPermissions(); 
$test->setMainPagePermissions(); 

echo "<br>value 1 : ".$test->gettab1Status(); 
echo "<br>value 2 : ".$test->gettab2Status(); 
echo "<br>value 3 : ".$test->gettab3Status(); 
echo "<br>value 4 : ".$test->gettab4Status(); 
?> 

Dans cela il n'imprime pas les valeurs des variables membres de la classe.

+1

Un indice général: mettez 'error_reporting (E_ALL | E_STRICT);' au dessus de vos scripts. Cela vous permettra de savoir quand vous essayez d'utiliser des variables inexistantes. –

+1

quel est le point d'enrouler '$ this-> SetPremissionsSelection' dans un bloc' try/catch' quand la méthode ne lance rien qui puisse être intercepté? – Gordon

Répondre

5

Vous avez un problème de syntaxe. En PHP, vous accédez aux membres de la classe avec $this->foo, et non $this->$foo. Ce dernier utilise la valeur de la variable $ foo pour obtenir le membre.

2

Retirez dollars lors de l'accès des champs avec $this->field

$this->tab1=$a; 
$this->tab2=$b; 
$this->tab3=$c; 
$this->tab4=$d; 
Questions connexes