假设您有一个包含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);
}
答案 0 :(得分:1)
如果有很多,我会选择Sample/Interfaces
。如果不是,例如Samples/Shared
之类的东西。但这实际上更多的是偏好或设计决定,而不是规则或其他。含义:由您决定。
但是,只是为了记录,有一个标准的记录器接口已被php框架社区接受:
https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-3-logger-interface.md
如果您正在编写框架,那么您应该真正了解所有可接受的标准。第一个(psr0)实际上是强制性的。我猜你已经在关注它了。