阅读量:0
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()
方法时,会在日志中添加时间信息,并将日志写入文件中。