0

我有一个由多个模块组成的 ZF2 应用程序,我想创建一个Logger可以从这些模块中的任何一个访问的类。基本上,我希望能够使用简单的Logger::info("Something").

当前的应用程序布局是这样的:

root/
  module/
    module1/
      src/
        module2/
          src/
        module3/
          src/

放置这个新的记录器类的最佳位置在哪里?以及如何确保可以从任何子模块访问它?

4

2 回答 2

1

我建议使用ServiceManager而不是调用静态方法,这将允许您在需要时更轻松地更换日志记录类。

此外,ZF2 模块在代码结构方面非常灵活,因此您可以简单地使用:

module/Application/src/Application/Logger/LoggerFactory.php

或者,如果您看到此代码在其他项目中被重用,则可能创建一个 Logger 模块。

昨天我确实看到了 Rob Allen 关于模块目录结构的博客文章 - http://akrabat.com/zend-framework-2/thoughts-on-module-directory-structure/ - 它可能值得快速阅读。

于 2013-02-06T10:20:07.470 回答
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'));
            },
    );
}
于 2013-02-06T09:38:25.090 回答