PHPにおけるプロクシパターンの実装方法
PHP プログラミングにおけるプロキシパターンは、プロキシクラスを作成することで実装できます。プロキシクラスは通常、プロキシ対象のクラスと同じインタフェースを持ち、そのメソッドが実行されると、プロキシ対象のメソッドを呼び出します。
ロギングを実現するためにプロキシパターンを使用する方法の簡単な例を以下に示します。
最初に、ログ記録のためのインタフェース Logger を作成します:
interface Logger
{
public function log($message);
}
その後、ログをファイルに記録するため、Loggerインターフェイスを実装した代理クラスFileLoggerを作成します。
class FileLogger implements Logger
{
public function log($message)
{
// 将日志写入文件
file_put_contents('log.txt', $message . "\n", FILE_APPEND);
}
}
次に、ProxyLogger という代理クラスを作成して、log() メソッドを呼び出したときに、ログに付加情報を追加し、委譲元の log() メソッドを呼び出します。
class ProxyLogger implements Logger
{
private $fileLogger;
public function __construct()
{
$this->fileLogger = new FileLogger();
}
public function log($message)
{
$message = date('Y-m-d H:i:s') . ': ' . $message;
$this->fileLogger->log($message);
}
}
最後に、代理パターンを使用するために、代理クラスのインスタンスを生成する:
$logger = new ProxyLogger();
$logger->log('This is a log message');
これにより、プロキシクラスのlog()メソッドを呼び出すと、ファイルに出力すると同時に、ログにタイムスタンプが追加されます。