0

別々のフォルダーと名前空間にある 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);
}
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 に答える