使用“$this”动态访问对象 属性
Dynamically access object property by using "$this"
我的代码中有下一行来获取 ZF3 中的实体:
$entity = $this->userCredentialsTableGateway
->getResultSetPrototype()
->getArrayObjectPrototype();
为了针对不同的表自动执行它,我创建了一个函数:
private function getEntityFromGateway( $table )
{
$context = $table . "TableGateway";
return $this->$context
->getResultSetPrototype()
->getArrayObjectPrototype();
}
当我尝试获取
$entity = $this->getEntityFromTableGateway( "UserCredentials" )
报错:
Undefined property:
User\DataGateway\UserDataGateway::$UserCredentialsTableGateway
所以,为什么 $this->$var
表现得像 $this->$$var
。
PHP 版本 7.2
我认为您需要对现有代码稍作修改。
- 像这样用花括号包裹变量和字符串
"{$table}TableGateway"
- 小写 table 仅名称的第一个字符,例如,如果您一开始就全部 table,以后请使用小写
$context = lcfirst("{$table}TableGateway")
所以你的代码会像这样
private function getEntityFromGateway( $table )
{
$context = lcfirst("{$table}TableGateway");
return $this->$context
->getResultSetPrototype()
->getArrayObjectPrototype();
}
并像您已经在做的那样调用它,
$entity = $this->getEntityFromTableGateway( "UserCredentials" )
我的代码中有下一行来获取 ZF3 中的实体:
$entity = $this->userCredentialsTableGateway
->getResultSetPrototype()
->getArrayObjectPrototype();
为了针对不同的表自动执行它,我创建了一个函数:
private function getEntityFromGateway( $table )
{
$context = $table . "TableGateway";
return $this->$context
->getResultSetPrototype()
->getArrayObjectPrototype();
}
当我尝试获取
$entity = $this->getEntityFromTableGateway( "UserCredentials" )
报错:
Undefined property:
User\DataGateway\UserDataGateway::$UserCredentialsTableGateway
所以,为什么 $this->$var
表现得像 $this->$$var
。
PHP 版本 7.2
我认为您需要对现有代码稍作修改。
- 像这样用花括号包裹变量和字符串
"{$table}TableGateway"
- 小写 table 仅名称的第一个字符,例如,如果您一开始就全部 table,以后请使用小写
$context = lcfirst("{$table}TableGateway")
所以你的代码会像这样
private function getEntityFromGateway( $table )
{
$context = lcfirst("{$table}TableGateway");
return $this->$context
->getResultSetPrototype()
->getArrayObjectPrototype();
}
并像您已经在做的那样调用它,
$entity = $this->getEntityFromTableGateway( "UserCredentials" )