在 PHP 中,代理模式可以用于各种场景,例如延迟对象的创建、控制对敏感对象的访问、实现权限控制等。以下是一个简单的 PHP 代理模式的示例:
<?php
// 主题接口
interface Subject {
public function request();
}
// 具体主题类
class RealSubject implements Subject {
public function request() {
echo "RealSubject: 处理请求\n";
}
}
// 代理类
class Proxy implements Subject {
private $realSubject;
public function request() {
// 在需要时创建真实主题对象
if ($this->realSubject === null) {
$this->realSubject = new RealSubject();
}
// 执行代理逻辑,可以在调用真实主题对象之前或之后添加额外的处理
echo "Proxy: 转发请求\n";
$this->realSubject->request();
echo "Proxy: 请求处理完成\n";
}
}
// 客户端代码
$client = new Proxy();
$client->request();
在这个例子中,Subject 接口定义了主题对象的接口,RealSubject 类是具体主题类,实现了 Subject 接口。Proxy 类是代理类,也实现了 Subject 接口,它在执行请求时创建了真实主题对象,并可以在请求前后添加额外的处理逻辑。
代理模式的优势在于可以在不改变已有代码的情况下,通过引入代理对象来对现有对象的访问进行控制。这种方式有助于实现懒加载、权限控制、日志记录等功能。
转载请注明出处:http://www.pingtaimeng.com/article/detail/11949/PHP