PHP:扩展类方法而不继承

时间:2015-06-17 21:56:09

标签: php oop extending

我试图将其他功能分离到其他文件,可以在运行时包含或不包含。我认为这是构建模块化架构的好方法,但我无法找到实现它而无需继承的方法。这笔交易是我有基类:

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:换句话说,我想改变类代码之外的类方法行为,保留它的默认功能。

0 个答案:

没有答案