【发布时间】:2010-10-31 05:04:27
【问题描述】:
假设有一个名为“Class_A”的类,它有一个名为“func”的成员函数。
我希望“func”通过将 Class_A 包装在装饰器类中来做一些额外的工作。
$worker = new Decorator(new Original());
谁能举个例子?我从来没有在 PHP 中使用过 OO。
下面的版本对吗?
class Decorator
{
protected $jobs2do;
public function __construct($string) {
$this->jobs2do[] = $this->do;
}
public function do() {
// ...
}
}
上面的代码打算给数组做一些额外的工作。
【问题讨论】:
-
你应该初始化你的变量:protected $jobs2do = array();
-
但这仍然不是标准版本,也许应该使用'call_user_func'之类的东西
-
哦,没看到!是的,当然,在 PHP 5.3 之前没有闭包。你绝对应该看看 PHP 中的回调:us.php.net/call-user-func
-
我写了这个装饰器摘要来支持灵活的装饰器:gist.github.com/CMCDragonkai/6896642 派生自jrgns.net/decorator-pattern-implemented-properly-in-php/…
-
sourcemaking.com/design_patterns/decorator/php 符合要求。会回答,但我不想只是复制和粘贴他的作品。