我有一个由几个模块组成的ZF2应用程序,我想创建一个Logger
类,可以从任何这些模块访问。基本上,我希望能够使用简单的Logger::info("Something")
从任何地方进行日志记录。
当前的应用程序布局如下:
root/
module/
module1/
src/
module2/
src/
module3/
src/
放置这个新记录器类的最佳位置在哪里?以及如何确保可以从任何子模块访问它?
答案 0 :(得分:1)
我建议使用ServiceManager
而不是调用静态方法,如果需要,这将允许您更容易地更换日志记录类。
此外,ZF2模块在如何构建代码方面非常灵活,因此您可以简单地使用:
module/Application/src/Application/Logger/LoggerFactory.php
如果您看到此代码在其他项目中重复使用,或者可能创建一个Logger模块。
我确实看到Rob Allen昨天发布了一篇关于模块目录结构的博客文章 - http://akrabat.com/zend-framework-2/thoughts-on-module-directory-structure/ - 可能值得快速阅读。
答案 1 :(得分:0)
我在module / Application / src / WhateverName
下放置了所有应该可以接受的通用类例如,我将auth类放在:
下module/Application/src/Application/Authentication/AuthenticationService.php
使用命名空间:
namespace Application\Authentication;
然后我在Module.php中定义服务
public function getServiceConfig()
{
return array(
'factories' => array(
'auth_service' => function ($sm) {
$zfauthservice = new \Zend\Authentication\AuthenticationService;
return new \Application\Authentication\AuthenticationService($zfauthservice, $sm->get('bp_user_mapper_model'));
},
);
}