在 Zend Framework 2 中,我记得一个插件模块 A 插件模块 B。
如果您从控制器中调用插件,它可以在任何地方工作,但我需要在另一个插件中调用插件。
我能怎么做?
在 Zend Framework 2 中,我记得一个插件模块 A 插件模块 B。
如果您从控制器中调用插件,它可以在任何地方工作,但我需要在另一个插件中调用插件。
我能怎么做?
您基本上必须将 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 工厂进行注入
您可以从插件内部访问控制器:
$this->getController()->anotherPlugin();
尝试从控制器插件管理器加载插件。
$pluginA = $this->serviceLocator->get('ControllerPluginManager')->get('pluginA');
// Invoke plugin as normal
$pluginA(params);