Kohana 3中空抽象类的目的是什么?

时间:2012-02-07 18:17:11

标签: php oop kohana kohana-3 kohana-orm

我在实践中并没有多多使用抽象类,虽然我明白它们是什么:一种指定子类的方法必须实现哪些方法。

我刚刚通过Doxygen创建了一个Kohana项目,可以完整地看到类层次结构。我看到,在链条的顶端我们有一个工厂:

abstract class Kohana_Model { 

    public static function factory($name){
        // Add the model prefix
        $class = 'Model_'.$name;
        return new $class;
    }

}

直接在它下面继承,我们有一个空的抽象类:

abstract class Model extends Kohana_Model {}

...在此之下,有三个继承的类:Kohana_Model_DatabaseKohana_ORMModel_Foobar

有人请为此解释编程推理 - 在链中有一个空的抽象类的目的是什么? (而且,根本没有?)

为什么不让Kohana_Model_Database,Kohana_ORM和Model_Foobar直接从Kohana_Model继承,当(显然?)Model和Kohana_Model之间没有其他分支或继承?

2 个答案:

答案 0 :(得分:5)

您正在寻找的答案是Cascading File SystemTransparent Extensions

答案 1 :(得分:2)

它允许您通过调用

来创建模型
class News_Model extends Model

默认情况下会自动扩展Kohana_Model,事情会变得很糟糕。

它还允许您通过创建自己的模型文件来扩展Kohana_Model

class Model extends Kohana_Model

覆盖抽象Model类,并允许您添加自定义功能。然后,当您将Kohana版本升级到(例如)3.4时,您的扩展模型不会被新的Kohana文件覆盖。