我有一些助手在错误时抛出异常。这对开发来说没问题,但是对于生产我想配置PhpRenderer
来捕获并记录异常,而不需要制作要渲染的孔视图文件 - 只需返回任何内容。
PhpRenderer
的方法有:
public function __call($method, $argv)
{
if (!isset($this->__pluginCache[$method])) {
$this->__pluginCache[$method] = $this->plugin($method);
}
if (is_callable($this->__pluginCache[$method])) {
return call_user_func_array($this->__pluginCache[$method], $argv);
}
return $this->__pluginCache[$method];
}
覆盖此方法是否足够?
如何将PhpRenderer
替换为我自己的?
答案 0 :(得分:0)
您可以通过编写自己的视图策略来实现。
首先,在配置中注册新策略。
return array(
'factories' => array(
'MyStrategy' => 'Application\ViewRenderer\StrategyFactory',
)
'view_manager' => array(
'strategies' => array(
'MyStrategy'
),
),
);
然后,创建自己的策略
namespace Application\ViewRenderer;
use Zend\View\Strategy\PhpRendererStrategy;
use Zend\ServiceManager\ServiceLocatorInterface;
use Zend\ServiceManager\FactoryInterface;
class StrategyFactory implements FactoryInterface
{
public function createService (ServiceLocatorInterface $serviceLocator)
{
$renderer = new Renderer ();
return new Strategy ($renderer);
}
}
和渲染器。
namespace Application\ViewRenderer;
use Zend\View\Renderer\PhpRenderer;
class Renderer extends PhpRenderer
{
public function render($nameOrModel, $values = null) {
// this is just an example
// the actual implementation will be very much like in PhpRenderer
return 'x';
}
}