Я столкнулся с проблемой при вызове __invoke() для объекта. Является ли метод __invoke() независимым от переменных экземпляра? Мне нужно вызвать __invoke() непосредственно в моих шаблонах из-за некоторой инъекции ZF2 для вызова $this->getView()->render(...) (иначе getView() возвращает значение null), и я хотел бы установить переменные экземпляра там. Любое обходное решение?
Смотрите мой код:
namespace Person\Person\View\Helper;
use Zend\View\Helper\AbstractHelper;
class PersonShowWidget extends AbstractHelper
{
protected $model = null;
public function __construct(array $options = null)
{
$this->parseOptions($options);
}
public function __invoke()
{
var_dump($this->model); //returns null
return $this->getView()->render('person/show/show_widget', array(
'title' => 'Cliente',
'model' => $this->model,
)
);
}
public function setOptions(array $options = null)
{
$this->parseOptions($options);
}
protected function parseOptions(array $options = null)
{
if (!is_null($options) && is_array($options)) {
if (isset($options['model'])) {
$model = $options['model'];
if (isset($model['id'])) {
$this->model['id'] = $model['id'];
} else {
throw new \Exception;
}
if (isset($model['form'])) {
$this->model['form'] = $model['form'];
} else {
throw new \Exception;
}
}
}
var_dump($this->model); //returns valid data
}
}
Я вызвал конструктор с некоторыми параметрами или методом setOptions перед вызовом __invoke().
Спасибо,