Динамический доступ к свойству объекта с помощью & quot; $ this & quot;

У меня есть следующие строки в моем коде, чтобы получить сущность в 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

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" )
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]