我在以下代码中收到以下错误:
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中访问空属性
为什么
答案 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。