我的代码中有下一行来获取 ZF3 中的实体:
$entity = $this->userCredentialsTableGateway
->getResultSetPrototype()
->getArrayObjectPrototype();
为了针对不同的表自动化它,我创建了一个函数:
private function getEntityFromGateway( $table )
{
$context = $table . "TableGateway";
return $this->$context
->getResultSetPrototype()
->getArrayObjectPrototype();
}
当我试图得到
$entity = $this->getEntityFromTableGateway( "UserCredentials" )
它给出了一个错误:
Undefined property:
UserDataGatewayUserDataGateway::$UserCredentialsTableGateway
所以,为什么$this->$var
表现得像$this->$$var
. PHP 版本 7.2
我认为您需要对现有代码进行轻微修改。
- 用大括号包装变量和字符串,如下所示
"{$table}TableGateway"
仅小写表 - 名的第一个字符,例如,如果您一开始都有所有表,则使用小写字母,而不是像这样使用它
$context = lcfirst("{$table}TableGateway")
所以你的代码将是这样的
private function getEntityFromGateway( $table )
{
$context = lcfirst("{$table}TableGateway");
return $this->$context
->getResultSetPrototype()
->getArrayObjectPrototype();
}
并像你已经在做的那样这样称呼它,
$entity = $this->getEntityFromTableGateway( "UserCredentials" )