Я просто подумал об обходном пути. Вам просто нужно вызвать помощника вручную, вместо того, чтобы ZF вызывал его через call_user_func_array
.
Ref.php
class Zend_View_Helper_Ref extends Zend_View_Helper_Abstract
{
public function removeFromRef(&$ref)
{
// change your var value here
unset($ref['key']);
}
/**
* ZF calls this for us, but we'll call what we want, so you can skip this.
*/
// public function ref()
// {}
}
Как видите, вы можете пропустить соглашение о необходимости называть ваш основной метод именем файла, но я все же рекомендую его.
Теперь вы можете передавать ссылки в представлениях / контроллерах:
// in view:
$this->getHelper('Ref')->removeFromRef($someVar2Change);
// in controller
$this->view->getHelper('Ref')->removeFromRef($someVar2Change);
По сути, именно это и делает $this->ref()
: получает помощника, затем вызывает call_user_func_array
.
У некоторых людей могут возникнуть проблемы с использованием $this->getHelper('Ref')->ref()
вместо $this->ref()
, но это работает.