如何在 zf2 中使用辅助类?

use*_*622 2 zend-framework zend-framework2

我正在将 Zend Framework 2 用于 Web 应用程序。在控制器操作中,我会创建一些 PDF 文档。我想使用帮助类来开发创建 PDF 的方法。存储类的最佳位置是什么?在控制器目录中?或者该框架是否在其架构中提供了一些更好的位置来执行此操作?或者甚至更好的方法或概念?

谢谢!

itr*_*tro 6

您可以在 Controller 目录下创建一个名为 Plugin 的目录。您的插件的好名字将具有“插件”终止。

如果您的插件只有一种方法,您可以将逻辑放在 __invoke 方法中:

public function __invoke($data)
{
    // [ process $data ]
}
Run Code Online (Sandbox Code Playgroud)

如果没有并且您需要更多方法,那么您的 invoke 方法将必须返回您的插件实例:

public function __invoke()
{
    return $this;
}

public function otherMethod($data)
{
    // [ process $data ]
}
Run Code Online (Sandbox Code Playgroud)

然后你必须在 module.config.php 中注册你的插件,创建一个名为“controller_plugins”的新键:

'controller_plugins' => array(
    'invokables' => array(
        'myPdf' => 'MyModule\Controller\Plugin\MyPdfPlugin',
    ),
),
Run Code Online (Sandbox Code Playgroud)

您可以在那里使用用于 module.config.php 中每种服务的相同方法:invokables、factories、abstract_factories、aliases,...

现在您已准备好在控制器中使用它:

$this->myPdf($data);
Run Code Online (Sandbox Code Playgroud)

如果您有多种方法:

$this->myPdf()->otherMethod($data);
Run Code Online (Sandbox Code Playgroud)