假设您有一个包含 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);
}