вот выдержка из ссылки ZF2 , с которой следует начать:
14.4.2. Регистрация помощников Zend \ View \ Renderer \ PhpRenderer составляет брокер плагинов для управления помощниками, в частности, экземпляр
Zend \ View \ HelperBroker, расширяющий базовый плагин брокера на порядок
чтобы у нас были действительные помощники. HelperBroker по умолчанию
использует Zend \ View \ HelperLoader в качестве своего вспомогательного локатора. HelperLoader есть
загрузчик на основе карты, что означает, что вы просто отобразите
имя помощника / плагина, по которому вы хотите сослаться на него
имя класса помощника / плагина.
Программно это делается следующим образом:
// $view is an instance of PhpRenderer
$broker = $view->getBroker();
$loader = $broker->getClassLoader();
// Register singly:
$loader->registerPlugin('lowercase', 'My\Helper\LowerCase');
// Register several:
$loader->registerPlugins(array(
'lowercase' => 'My\Helper\LowerCase',
'uppercase' => 'My\Helper\UpperCase',
));
В приложении MVC вы обычно просто передаете карту
плагины к классу через вашу конфигурацию.
// From within a configuration file
return array(
'di' => array('instance' => array(
'Zend\View\HelperLoader' => array('parameters' => array(
'map' => array(
'lowercase' => 'My\Helper\LowerCase',
'uppercase' => 'My\Helper\UpperCase',
),
)),
)),
);
Выше можно выполнить в каждом модуле, который должен зарегистрировать помощников
с PhpRenderer; однако следует помнить, что другой модуль может
зарегистрируйте помощников с тем же именем, чтобы порядок модулей мог влиять
какой вспомогательный класс будет на самом деле зарегистрирован!
14.4.3. Написание пользовательских помощников Написание пользовательских помощников легко. Мы рекомендуем расширить Zend \ View \ Helper \ AbstractHelper, но на
минимум, вам нужно только реализовать интерфейс Zend \ View \ Helper:
namespace Zend\View;
interface Helper
{
/**
* Set the View object
*
* @param Renderer $view
* @return Helper
*/
public function setView(Renderer $view);
/**
* Get the View object
*
* @return Renderer
*/
public function getView();
}
Если вы хотите, чтобы ваш помощник мог вызываться так, как если бы он был
вызов метода PhpRenderer, вы также должны реализовать
__invoke () в вашем помощнике.
Как отмечалось ранее, мы рекомендуем расширить
Zend \ View \ Helper \ AbstractHelper, поскольку он реализует методы, определенные
в Helper, давая вам преимущество в вашем развитии.
После того, как вы определили свой класс помощника, убедитесь, что вы можете автозагрузить
и затем зарегистрируйте его у брокера плагинов.
Вот пример помощника, который мы называем «SpecialPurpose»
namespace My\View\Helper;
use Zend\View\Helper\AbstractHelper;
class SpecialPurpose extends AbstractHelper
{
protected $count = 0;
public function __invoke()
{
$this->count++;
$output = sprintf("I have seen 'The Jerk' %d time(s).", $this->count);
return htmlspecialchars($output, ENT_QUOTES, 'UTF-8');
}
}
Тогда предположим, что когда мы регистрируем его в брокере плагинов, мы отображаем его
в строку "specialpurpose".
В скрипте вида вы можете вызвать помощника SpecialPurpose как можно больше
раз, как вам нравится; он будет создан один раз, а затем сохранится
за жизнь этого экземпляра PhpRenderer.
// remember, in a view script, $this refers to the Zend_View instance.
echo $this->specialPurpose();
echo $this->specialPurpose();
echo $this->specialPurpose();
Вывод будет выглядеть примерно так:
Я видел «Рывок» 1 раз. Я видел «The Jerk» 2 раз. я
видели "Рывок" 3 раз.