1

我的代码中有下一行来获取 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

4

1 回答 1

1

我认为您需要对现有代码进行轻微修改。

  1. 像这样用花括号包裹变量和字符串"{$table}TableGateway"
  2. 小写表名的第一个字符,例如,如果你先是所有表,后来小写使用它,就像这样$context = lcfirst("{$table}TableGateway")

所以你的代码会是这样的

private function getEntityFromGateway( $table )
{
    $context = lcfirst("{$table}TableGateway");
    return $this->$context
                ->getResultSetPrototype()
                ->getArrayObjectPrototype();
}

并像你已经在做的那样这样称呼它,

$entity = $this->getEntityFromTableGateway( "UserCredentials" )
于 2018-08-24T16:44:54.967 回答