在PHP对象中定义变量时出错

时间:2010-07-08 03:16:01

标签: 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();

注意:未定义的变量:第70行的/ Users / admin / PHP ECC / finitefield.php中的intmodulus 致命错误:无法在第70行的/ Users / admin / PHP ECC / finitefield.php中访问空属性

为什么

2 个答案:

答案 0 :(得分:4)

语法是

$this->intmodulus 

不是$this->$intmodulus

您收到错误消息“无法访问空属性”,因为$intmodulus未定义,因此访问它会产生NULL。当您尝试将NULL用作属性名称时,NULL将转换为空字符串。

如果$intmodulus的值是有效属性的名称(例如,如果$intmodulus == "intmodulus"),则您将使用该名称访问该属性。

答案 1 :(得分:0)

$this->$intmodulus应为$this->intmodulus

有关正在发生的事情的信息,请参阅the PHP documentation for Variable variables