1

以前の質問で、さまざまな ORM ライブラリについて尋ねました。Kohana は非常にきれいに見えますが、ORM の目的では機能的であることがわかります。私はすでに作業中のMVCフレームワークを持っています。フレームワークとして実行したくない場合、DB および ORM 基本クラス ファイルを提供するために含める適切なファイルセットは何ですか?

アップデート:

私は飛び込んで、ORM ソースコードを見始めました.. 1 つのことがすぐに私を混乱させました.. すべての ORM クラスにはクラス名に _CORE、つまり ORM_Core ORM_Iterator_Core が追加されていますが、コードはどこでも ORM クラスを拡張しています。問題は、コードベース全体を6つの異なる方法で検索したことです.プレーンなORMクラス定義もORMインターフェース定義も何も見たことがありません..誰かがその魔法がどこで起こるか教えてもらえますか?

4

4 に答える 4

5

なぜただ持っていないのですか

class ORM extends ORM_Core {} 

あなたのコードのどこかに?これにより、ローダー コードを使用する必要がなくなります。

また、Kohana_Exception、データベース ライブラリ (および適切なドライバー)、Kohana::config()、Kohana::auto_load()、Kohana::log() メソッド (これらについては Database.php を検索してください) も必要です。

Kohana は優れた MVC フレームワークですが、実際にはそのようなチャンクに分解するようには設計されていません。Doctrine、PHP 用の別の ORM (スタンドアロンとして設計されている)も調査することをお勧めします。

于 2008-10-22T06:28:18.740 に答える
3

Kohana はマジック クラス ローディングを使用しているため、_Core エクステンションを持つ定義済みクラスがクラスとして存在しない場合に、

つまり、ORM_Core は存在しますが、ORM は存在しないため、パッケージは 100% マジック クラス ローディングを使用するため、Kohana は魔法のように ORM クラスを定義します。

誰かが興味を持っている場合に備えて、後で誰もが見つけられるように、ここに私の発見を記録しています。

From Kohana.php in the system directory:

<-- snip if ($extension = self::find_file($type, self::$configuration['core']['extension_prefix'].$class))
{
// Load the extension
require $extension;
}
elseif ($suffix !== 'Core' AND class_exists($class.'_Core', FALSE))
{
// Class extension to be evaluated
$extension = 'class '.$class.' extends '.$class.'_Core { }';
-->

<-- snip

// Transparent class extensions are handled using eval. This is
// a disgusting hack, but it gets the job done.
eval($extension);

-->

だからそれは評価を行います..

于 2008-10-22T02:58:06.947 に答える
1

Zak、保守可能なフレームワークの ORM を確認してください。http://framework.maintainable.com/mvc/3_model.php#c3.7 よく読んでください。気に入っていただけると思います。これについて詳しく は、PHP 用の ORM フレームワークを使用するのが最も簡単なのは何ですか?に投稿します。

于 2008-11-25T00:25:33.060 に答える
0

http://obando.com.ve/2009/04/29/modelado-orm-rapido-y-facil/

それだけで十分です!!

于 2009-05-01T04:12:08.370 に答える