我的代码中包含以下几行内容,以获取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版
答案 0 :(得分:1)
我认为您需要对现有代码进行一些修改。
"{$table}TableGateway"
$context = lcfirst("{$table}TableGateway")
所以您的代码将是这样
private function getEntityFromGateway( $table )
{
$context = lcfirst("{$table}TableGateway");
return $this->$context
->getResultSetPrototype()
->getArrayObjectPrototype();
}
并以这种方式调用它,就像您已经在做的那样,
$entity = $this->getEntityFromTableGateway( "UserCredentials" )