別々のフォルダーと名前空間にある 2 つのコンポーネントを持つフレームワークがあるとします。それらをあるレベルに分離して、それぞれを単独で使用できるようにする必要があります。
最初のクラスは、ログ ファイルへのメッセージの書き込みなど、特定の機能を提供します。
<?php
namespace \Sample\Log;
class Logger impements LoggerInterface {
public function log($message) { //Write message into log file } }
2 番目のクラスもフレームワーク機能を提供しますが、提供されたクラスを使用してログ メッセージを書き込むこともできる必要があります。
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/、または他の場所にあるべきですか? 私が提供した 3 つのオプションにはすべて、特定の長所と短所があるため、どこに配置すればよいかよくわかりません。
<?php
interface LoggerInterface
{
public function log($message);
}