0

假设您有一个包含 2 个组件的框架,这些组件位于不同的文件夹和命名空间中。您希望将它们解耦到一个级别,每个级别都可以单独使用。

第一个类提供了一定的功能,比如将消息写入日志文件:

<?php
namespace \Sample\Log;

class Logger impements LoggerInterface {
public function log($message) { //Write message into log file } }

第二个类还提供了框架功能,但也应该能够使用提供的类编写日志消息。

namespace \Sample\Config;

    class Config
    {

    protected $logger;

    public function setLogger(LoggerInterface $logger)
    {
    $this->logger=$logger
    }

    public function loadConfig(){
    include('config.php')
    $this->logger->log('Config file loaded!');
    }

    }

接口应该放在哪里以允许框架用户只使用配置类?它们应该在 Sample/Interfaces/、Sample/Logger/、Sample/Config/ 还是其他地方?我提供的所有三个选项都有一定的优点和缺点,所以我不确定我应该把它放在哪里。

<?php

interface LoggerInterface
{
public function log($message);
}
4

1 回答 1

1

Sample/Interfaces如果有很多我会去。如果没有,Samples/Shared例如。但这实际上更多是一种偏好或设计决定,而不是规则或其他东西。含义:由你决定。

但是,为了记录,有一个标准的记录器接口已被 php 框架社区接受:

https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-3-logger-interface.md

如果你正在编写一个框架,你真的应该看看所有公认的标准。第一个(psr0)实际上是强制性的。我猜你已经在关注它了。

于 2013-04-20T21:19:32.580 回答