详解php装饰模式的示例代码
人人站CMS是全新内核且开源免费的PHP企业网站开发建设管理系统,是一套高效、简洁、 强悍的PHP CMS源码,能够满足各类企业网站开发建设的需要。系统采用简单的模板标签,只要懂HTML就可快速开发企业网站。官方提供了大量网站模板免费下载和使用,将致力于为广大站长和企业提供简单易用的网站开发建设解决方案。模板特点: 1、安装即用,自带人人站CMS内核及企业站展示功能(产品,新闻,案例展示等),并可
';
}
class RequestHelper
{
/**
* return class resource id
*/
public function toString()
{
ob_start();
var_dump($this);
$str = ob_get_clean();
if (preg_match('/object\(' . CLASS . '\)\#\d+/', $str, $matches)) {
return $matches[0];
}
return CLASS;
}
}
// ---------------------------------------------------------
interface ProcessRequest
{
public function process(RequestHelper $req);
}
/**
* http request
*/
class HttpRequest implements ProcessRequest
{
public function process(RequestHelper $req)
{
echoLine('Process http request[' . $req . ']');
}
}
/**
* Log Decorator
* add log function
*/
class LogRequest implements ProcessRequest
{
protected $pr;
public function construct(ProcessRequest $pr)
{
$this->pr = $pr;
}
public function process(RequestHelper $req)
{
echoLine('Add log function!');
$this->pr->process($req);
}
}
/**
* Authenticate Decorator
* add authenticate function
*/
class AuthenticateRquest implements ProcessRequest
{
protected $pr;
public function construct(ProcessRequest $pr)
{
$this->pr = $pr;
}
public function process(RequestHelper $req)
{
echoLine('Add authenticate function!');
$this->pr->process($req);
}
}
// test code
$req = new RequestHelper();
$process = new HttpRequest();
// add log
$process = new LogRequest($process);
// add auth
$process = new AuthenticateRquest($process);
// process request
$process->process($req);










