Проверьте документы: https://framework.zend.com/manual/2.1/en/modules/zend.view.helpers.advanced-usage.html
Если вы хотите, чтобы ваш помощник, чтобы иметь возможность быть вызван, как если бы это был вызов метода в PhpRenderer, вы также должны реализовать метод __invoke() внутри вашего помощника.
То же самое следует применять с веточкой визуализатором, он пытается выполнить вспомогательный класс (с использованием вызова в качестве ярлыка)
Вы можете увидеть, где PHPRenderer использует __invoke() в качестве прокси/ярлык помощников :
https://github.com/zendframework/zend-view/blob/master/src/Renderer/PhpRenderer.php#L389
/**
* Overloading: proxy to helpers
*
* Proxies to the attached plugin manager to retrieve, return, and potentially
* execute helpers.
*
* * If the helper does not define __invoke, it will be returned
* * If the helper does define __invoke, it will be called as a functor
*
* @param string $method
* @param array $argv
* @return mixed
*/
public function __call($method, $argv)
{
$plugin = $this->plugin($method);
if (is_callable($plugin)) {
return call_user_func_array($plugin, $argv);
}
return $plugin;
}
Я полагаю, визуализатор Twig просто делает что-то подобное, Infact мы можем видеть ниже это:
https://github.com/ZF-Commons/ZfcTwig/blob/master/src/ZfcTwig/View/TwigRenderer.php#L83
Большое спасибо за ваше хорошее объяснение! –