我试图将其他功能分离到其他文件,可以在运行时包含或不包含。我认为这是构建模块化架构的好方法,但我无法找到实现它而无需继承的方法。这笔交易是我有基类:
class Model {
protected $name;
function __construct() {
$this->name = 'default';
}
function getName() {
return 'Model: ' . $this->name;
}
}
具体课程:
class Item extends Model {
function getName() {
return 'Item: ' . $this->name;
}
}
我通过项目使用:
$item = new Item();
echo $item->getName();
结果将是:
项目:默认
我想在其他地方更改getName()行为,以获得如下结果:
class ExtendedItem extends Item {
function getName() {
return parent::getName() . ' and this is extended method';
}
}
$extendedItem = new ExtendedItem();
echo $extendedItem->getName();
项目:默认,这是扩展方法
但是我想在不使用子类的情况下实现它,即不触及Item或Model类并且不更改对象初始化。我想会有更多这样的扩展,它们将动态包含在内。我应该以什么方式搜索,或者你能解释如何实现这个目标吗?
提前感谢您的回答。
UPD:换句话说,我想改变类代码之外的类方法行为,保留它的默认功能。