2010-12-27 13 views
0

私はKohanaフレームワークを見て、フレームワークの仕組みをよりよく理解するためにコードを調べようとしています。Kohanaフレームワーク。 Kohanaクラスの質問

だから - のindex.phpから我々はロード:core.phpのファイルで

require SYSPATH.'base'.EXT; 
require SYSPATH.'classes/kohana/core'.EXT; 
require APPPATH.'bootstrap'.EXT; 

我々は次のようにします。

public static $environment = Kohana::DEVELOPMENT; 

私たちはKohanaの:: DEVELOPMENTを呼び出すことで参照するには? 私は理解しているから::使用することで::我々はkohanaクラスから静的な定数を取得する必要があります。 - 右?しかし、コードのその瞬間に、私が見つけることができるKohanaクラスがロードされていません。 誰かがここで何が起こっているのかを説明できますか? おかげ

解決:

気にしません。私は十分にコードに従わなかった。 KohanaクラスはKohana_Coreクラスを拡張します。うーん。あまりにも悪い場合は、StackOverflowからダムの質問を削除する方法はありません。

答えて

2

Kohana(他のフレームワークと同様)は、「自動読み込み」メカニズムを使用しています。これにより、手で定義されたファイルを含めずにクラスを使用することができます。オートローダは自動的に/がKohanaクラスが含まれているファイルが必要に含まれます。

あなたがKohana::DEVELOPMENTnew Kohana();を入力するときに、オートローダはそれでKohanaクラスでファイルをロードします。これは魔法のようには機能しません。自分のフレームワーク用に独自のオートローダーコードを書く必要があります。

自動読み込みの詳細についてはhereをご覧ください。

+0

これはphpのスプライトオートローダーを使用しています。コードでその時間までに定義されていません。後でコードで定義されています。 – Stann

+0

oupps。気にしないで。コアクラスを直接使用するのではなく、後でコードで拡張します。デュオ。とにかくありがとう – Stann

0

詳細については、spl_autoload registerを参照してください。 Kohanaは独自の実装を使用しています。これはbootstrap.phpファイルで設定できます。この機能はCore.phpファイルにあります。

/** 
* Enable the Kohana auto-loader. 
* 
* @link http://kohanaframework.org/guide/using.autoloading 
* @link http://www.php.net/manual/function.spl-autoload-register 
*/ 
spl_autoload_register(array('Kohana', 'auto_load'));