gpt4 book ai didi

php - 如何在 PHP 中实现装饰器?

转载 作者:IT王子 更新时间:2023-10-29 01:08:45 26 4
gpt4 key购买 nike

假设有一个名为“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() {
// ...
}
}

上面的代码打算给数组做一些额外的工作。

最佳答案

我建议您还为装饰器和您要装饰的对象创建一个统一的接口(interface)(甚至是一个抽象基类)。

继续上面的例子,前提是你可以有类似的东西:

interface IDecoratedText
{
public function __toString();
}

那么当然要修改两者TextLeetText来实现接口(interface)。

class Text implements IDecoratedText
{
...//same implementation as above
}

class LeetText implements IDecoratedText
{
protected $text;

public function __construct(IDecoratedText $text) {
$this->text = $text;
}

public function __toString() {
return str_replace(array('e', 'i', 'l', 't', 'o'), array(3, 1, 1, 7, 0), $this->text->toString());
}

}

为什么要使用接口(interface)?

因为这样您就可以添加任意数量的装饰器,并确保每个装饰器(或要装饰的对象)都具有所有必需的功能。

关于php - 如何在 PHP 中实现装饰器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/948443/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com