我有一个在PHP类中设置全局范围的实例变量。变量在构造函数中成功设置。但是当我在getter方法中访问时,我得到一个PHP致命错误。我对php很新。为什么$sid
没有设置?
class Wrapper
{
private $sid = null;
/**
public function __construct($data){
// Retrieve client account automatically
$sid = (isset($data['client_id'])) ? $data['client_id'] : null;
echo("set sid to");
echo($sid);
$this->client = new Account($sid); //this is getting set properly
}
...
public function getSID()
{
return $this->$sid;
}
使用该类的代码如下所示(它是使用PHPunit的单元测试):
public function testGetSubsctions(){
$clientObject = ClientModel::getInstance(7)->read();
$data = array('client_id' => $clientObject->id);
$this->assertEquals($data['client_id'], 7);
$hello = new Wrapper($data);
$this->assertEquals(7, $hello->getSid());
}
上面的代码会引发以下错误:
Cannot access empty property in /path to/wrapper.php on line 243
第242行的代码是getSid,位于
之下public function getSID()
{
return $this->$sid;
}
答案 0 :(得分:1)
在您显示的代码的第一部分中,我们可以看到return $this->$sid;
但未定义$sid
。必须在没有$
正确的语法是:
public function getSID()
{
return $this->sid;
}
编辑:有关$this->
,static
的使用以及与php中的OOP相关的其他内容的更多帮助,请参阅php documentation,更具体地说:
about static keyword(仅供您查看差异的信息)
答案 1 :(得分:0)
以下是设置$ sid;
的方法public function __construct($data){
// Retrieve client account automatically
$this->sid = (isset($data['client_id'])) ? $data['client_id'] : null;
echo("set sid to");
echo($this->sid);
$this->client = new Account($this->sid); //this is getting set properly
}
变量是实例的一部分,因此您必须使用$this
关键字。简单地使用$sid
指的是一个新的局部变量。
在sid之前也没有$
个符号:
public function getSID()
{
return $this->sid;
}