2016-06-21 2 views
0

データをDBに格納するクラスがいくつかあり、pdo UPDATE文ごとにいくつかのロギング操作を実行するための新しいloggerクラスメソッドを実装したいと考えています。グローバルな "Logger"クラスをPHPのすべてのアプリケーションクラスで使用できるようにする

は、これらのクラスの

  • 、すべてが伸びると述べglobalクラス
  • 私は

は私が「含める」をする必要があると思う、すべてのクラスに利用できる$ロガークラスを持っていると思います新しいloggerクラスをグローバルに追加するのは正しいですか?

「はい」の場合は、正しくOOPの方法でどうすればよいですか? より良い方法は、依存性注入を使用することで、にきびを持つ:私は

+0

実際のコードを参照する必要があります。しかし、伝統的なOOPの方法は、データベースクラスのデコレータを作成することです。これには、既にインタフェースに基づいているクリーンなOOPコードベースが必要です。 – Steve

+0

「グローバル」クラスは実際にはどういう意味ですか?キーワードまたは実際の名前として「グローバル」?クラスにどこからでもアクセスできるようにするには、オートロードを使用してください。 –

答えて

-1
class Global { 

    private $logger = null; 

    protected function log($msg) { 
     if ($this->logger === null) { 
     $this->logger = new Logger(); 
     } 
     $this->logger->log($msg); 
    } 
} 

そして、他のクラス$this->log('test')

編集していただきありがとうございます...唯一のいくつかの簡単なブリーフィングではなく、詳細なコードが必要です例えば。

+0

クラスの外から 'protected'メソッドをどのように呼び出すのですか? –

+0

'protected'を' public'に変更しましたが、 'Class 'Logger' not found'エラーが発生しました...新しい' Logger'クラスを拡張するために 'global'を設定する必要がありますか? – alzambo

+0

これは単なる例です。ログ機能で作成するLoggerが必要です。 – Andre

関連する問題