私はLoggerオブジェクトを注入されているサービスを開発していますが、私は2種類のロガーを持つことができます。私はsyslogロガーとキューメッセージシステムロガーを持つ予定です。これは可能ですか?私は、パラメータとして配列をしていると来て、それを使用することができPHPインターフェイスで異なるパラメータでメソッドを定義することはできますか?
class Syslogger implements Loggable
{
public function log()
{
...
}
}
class QMSLogger implements Loggable
{
public function log($queueName)
{
...
}
}
唯一の方法:そのインターフェイスを実装
interface Loggable
{
public function log() ;
}
と2クラス:
アイデアは、インターフェイスをしています1つのクラスではなく、もう1つのクラスで使用しています...しかし、それは少し臭いです:P
このメソッドは、あるケースではパラメータを受け取り、別のケースでは受け付けない場合、同じインターフェイスではありません。 – deceze
はいこれはもっと正しい方法だと思いますが、いずれかのクラスを注入してロギングシステムを変更できるようにしたかったのですが、間違っていたと思います。 – Khriz
'$ queueName'のデフォルト値がNULLの場合( 'public function log($ queueName = null){...}')しかし、私はここで欺瞞に同意します。 –