2010-03-01 5 views
1

Pourquoi ne puis-je pas définir $_SERVER['DOCUMENT_ROOT'] comme attribut? voir un exemple de code

class foo 
{ 
private $path = $_SERVER['DOCUMENT_ROOT']; // generates error 
private $blah; 

public function __construct() 
{ 
//code 
} 

    public function setBla($bla) 
    { 
    $this->blah = $bla; 

    } 
} 
+0

Pouvez-vous fournir une erreur? – antyrat

+0

Erreur d'analyse: erreur de syntaxe, inattendue T_VARIABLE dans test.php sur la ligne 4 – streetparade

Répondre

5

vous ne pouvez pas utiliser d'autres variables lors de l'initialisation dans la déclaration. essayez ceci:

class foo 
{ 
private $path; 
private $blah; 

public function __construct() 
{ 
$this->$path = $_SERVER['DOCUMENT_ROOT']; 
//code 
} 

    public function setBla($bla) 
    { 
    $this->blah = $bla; 

    } 
} 

par ailleurs, vous êtes sûr que privé est un choix approprié, souvent protégé est préférable.

+0

Ce n'était pas ce que je cherchais mais merci quand même :-) – streetparade

2

Class properties ne peuvent être initialisés avec des valeurs constantes:

[…] declaration may include an initialization, but this initialization must be a constant value--that is, it must be able to be evaluated at compile time and must not depend on run-time information in order to be evaluated.

Vous avez donc besoin de les initialiser dans le constructeur comme mathroc dit.

Questions connexes