2010-07-08 8 views
1

Je reçois l'erreur suivante dans le code suivant:Erreur définition variable objet PHP

Class primeField implements field { 
    private $intmodulus = ''; 
    public function generator(){ 
     return ; 
    } 

    public function modulus(){ 
     return $this->$intmodulus; 
    } 
    public function __construct($modulus , $base=0) { 
     if (is_resource($modulus) && get_resource_type($modulus) == "GMP integer"){ 
      $this->$intmodulus = $modulus; 
     } else{ 
      $this->$intmodulus = gmp_init($modulus , $base); \\line 70 
     } 
    } 
} 
$a = new primeField(11); 
$a->modulus(); 

Avis: Undefined variable: intmodulus dans/Users/admin/PHP ECC/finitefield.php en ligne 70 Fatal erreur: ne peut pas accéder à la propriété vide dans/Users/admin/PHP ECC/finitefield.php en ligne 70

Pourquoi

Répondre

4

La syntaxe est

$this->intmodulus 

et non $this->$intmodulus.

Vous obtenez une erreur disant "ne peut pas accéder à la propriété vide" car $intmodulus n'est pas défini et par conséquent l'accès lui donne NULL. La valeur NULL est convertie en une chaîne vide lorsque vous tentez de l'utiliser comme nom de propriété.

Si la valeur $intmodulus était le nom d'une propriété valide (par exemple si $intmodulus == "intmodulus"), vous accéderiez à la propriété avec ce nom.

+2

Notez que $ this -> $ intmodulus est toujours valide PHP, il fait juste quelque chose de différent de ce qui était prévu. – Borealid

+0

Merci, ça fait environ 3 ans que j'ai touché PHP, et mon esprit est un peu engourdi. – ashaw