2010-07-08 48 views
1

我正在以下錯誤在以下代碼:錯誤限定可變

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(); 

說明:未定義變量:intmodulus在/用戶/管理員/ PHP ECC/finitefield.php上線70 致命錯誤:無法在/用戶/管理員/ PHP ECC/finitefield.php訪問空屬性上線70

爲什麼

回答

4

語法

$this->intmodulus 

不是$this->$intmodulus

由於$intmodulus未定義,因此訪問它會給出NULL,您會收到一條錯誤消息「無法訪問空屬性」。當您嘗試將其用作屬性名稱時,NULL會轉換爲空字符串。

如果$intmodulus的值是有效屬性的名稱(例如,如果$intmodulus == "intmodulus"),那麼您將訪問具有該名稱的屬性。

+2

請注意,$ this - > $ intmodulus仍然是有效的PHP,它只是做了一些不同於預期的東西。 – Borealid 2010-07-08 03:18:00

+0

Thankyou,自從我觸摸PHP後已經有3年了,而且我的頭腦有點麻木。 – ashaw 2010-07-08 03:20:59