2

在 Zend Framework 2 中,我记得一个插件模块 A 插件模块 B。

如果您从控制器中调用插件,它可以在任何地方工作,但我需要在另一个插件中调用插件。

我能怎么做?

4

3 回答 3

2

您基本上必须将 PluginA 注入 PluginB。IE:

$pluginA = new PluginA();
$pluginB = new PluginB($pluginA);
echo $pluginB("Hello World");

class PluginB {
    protected $pluginA;
    public function __construct(PluginA $pluginA) {
        $this->pluginA = $pluginA;
    }

    public function __invoke($arg) {
        $step1 = $this->doSomething($arg);
        return $this->pluginA->doSomeOtherPluginAThing($step1);
    } 
}

最终,您的解决方案看起来会有所不同,您将通过 ServiceManager 工厂进行注入

于 2013-06-25T16:30:47.180 回答
1

您可以从插件内部访问控制器:

$this->getController()->anotherPlugin();
于 2013-06-25T16:41:29.727 回答
0

尝试从控制器插件管理器加载插件。

插件B

$pluginA = $this->serviceLocator->get('ControllerPluginManager')->get('pluginA');
// Invoke plugin as normal
$pluginA(params);
于 2013-07-01T21:26:44.620 回答