2012-02-07 11 views
1

私は抽象クラスを実際には多く使っていませんが、私はそれが何であるか理解しています。どのメソッドを実装する必要があるのか​​をサブクラスに指示する方法です。コナナ3の空の抽象クラスの目的は何ですか?

私はちょうど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 {} 

を...そして、その下に、そこにある私は、チェーンの先頭に私たちは工場を持っている、ことを確認します3つの継承クラス:Kohana_Model_Database,Kohana_ORMおよびModel_Foobar

誰かがこれについてのプログラミングの理由を説明してください - これはチェーンでこの高い空の抽象クラスを持つ目的は何ですか?

なぜ、Kohana_Model_Database、Kohana_ORM、およびModel_FoobarをKohana_Modelから直接継承していないのですか?ModelとKohana_Modelの間で他の分岐や継承が発生していないようです(明らかに?)。

+0

以前はKohanaを使ったことがありませんでしたが、すべてのモデルクラスが拡張されるベースクラスに見えます。このリンクは、API http://kohanaframework.org/3.0/guide/apiにいくつかの洞察を与えるはずです – Markus

答えて

2

それはあなたがデフォルトで

class News_Model extends Model 

を呼び出すことによって、モデルを作成することができ、それは自動的にその後、Kohana_Modelを拡張し、物事は互角のドーリーになります。

はまた、独自のモデルファイル抽象モデルクラスをオーバーライドし、カスタム機能を追加することができます

class Model extends Kohana_Model 

を作成することにより、Kohana_Modelを拡張することができます。その後、Kohanaバージョンを3.4にアップグレードすると、拡張モデルは新しいKohanaファイルで上書きされません。

関連する問題