【问题标题】:What is the purpose of empty abstract classes in Kohana 3?Kohana 3 中空抽象类的目的是什么?
【发布时间】:2012-02-07 18:17:10
【问题描述】:

虽然我理解抽象类是什么,但在实践中我并没有太多使用抽象类:一种指示子类必须实现哪些方法的方法。

我刚刚通过 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_Database、Kohana_ORM和Model_Foobar。

有人能解释一下编程的原因吗?在链中如此高的位置有一个空抽象类的目的是什么? (而且,有吗?)

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

【问题讨论】:

  • 我以前从未使用过 Kohana,但它似乎是所有模型类都将扩展的基类。这个链接应该能让你深入了解他们的 API kohanaframework.org/3.0/guide/api

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


【解决方案1】:

您正在寻找的答案是Cascading File System 和Transparent Extensions。

【讨论】:

    【解决方案2】:

    它允许您通过调用来创建模型

    class News_Model extends Model
    

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

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

    class Model extends Kohana_Model
    

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

    【讨论】:

      猜你喜欢
      • 2011-01-18
      • 2015-06-12
      • 2011-02-03
      • 1970-01-01
      • 2019-11-19
      • 2012-03-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多