gpt4 book ai didi

zend-framework2 - 初始化程序无法识别的类

转载 作者:行者123 更新时间:2023-12-04 04:59:01 25 4
gpt4 key购买 nike

我对 zf2 很陌生,但我已经建立了一个使用它的网站。我对 serviceManager 有了一些了解,但现在我被困住了。

这是上下文:我想在我的 zf2 应用程序的任何类上实现一个可用的记录器。

在我的 global.php 中,我为记录器创建了工厂:

'service_manager' => array(
'factories' => array(
'Zend\Db\Adapter\Adapter'
=> 'Zend\Db\Adapter\AdapterServiceFactory',
'Zend\Log\Logger' => function($sm){
$logger = new Zend\Log\Logger;
$writer = new Zend\Log\Writer\Stream('./data/log/'.date('Y-m-d').'-error.log','wb');
$logger->addWriter($writer);
return $logger;
},
),

现在我想将它注入(inject)到每个实现 LoggerAwareInterface 的类中。
所以在我的 Module.php 中,我的 getServiceConfig 函数中有这个初始化程序
        'initializers' => array(
'logger' => function($service, $sm) {
if ($class instanceof LoggerAwareInterface) {
$logger = $sm->get('Zend\Log\Logger');
$class->setLogger($logger);
}
}
),

给出的示例,我想将它注入(inject)一个名为 PartController 的类中,所以我在 module.config.php 中将它设置为可调用
return array(
'controllers' => array(
'invokables' => array(
'Part\Controller\Part' => 'Part\Controller\PartController',
),
),

这个类正在实现 LoggerAwareInterface
class PartController extends AbstractActionController implements LoggerAwareInterface

我遇到的问题是记录器没有在 PartController 中初始化,我在 PartController 中使用 var_dump 检查了它。

我试图转储初始化程序检查的所有服务,但 PartController 没有出现......

我究竟做错了什么 ?为什么 PartController 没有在 serviceManager 中注册,尽管它在我的 module.config.php 的 invokables 部分?

在此先感谢大家。

最佳答案

如果你想让你的初始化器应用于 Controller ,你需要告诉 ControllerManager关于它,你可以通过实现 getControllerConfig 来做到这一点。 Zend\ModuleManager\Feature\ControllerProviderInterface 定义的方法, IE。,

<?php
// ..some namespace

use Zend\ModuleManager\Feature\ControllerProviderInterface;

class Module implements ControllerProviderInterface
{
// ..

public function getControllerConfig()
{
return array(
'initializers' => array(
'LoggerAwareInitializer' => function($instance, $sm) {
if ($instance instanceof LoggerAwareInterface) {
$logger = $sm->getServiceLocator()->get('Zend\Log\Logger');
$instance->setLogger($logger);
}
},
),
);
}

}

关于zend-framework2 - 初始化程序无法识别的类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16377897/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com