フレームワーク全体を使用せずにPHPでORMのKohanaライブラリをインストールすることはできますか?

StackOverflow https://stackoverflow.com/questions/223788

  •  03-07-2019
  •  | 
  •  

質問

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

更新:

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

役に立ちましたか?

解決

単に持っているだけではない

class ORM extends ORM_Core {} 

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

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

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

他のヒント

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

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

誰かが興味を持っている場合、私が見つけたものをここに文書化して、誰でも後で見つけられるようにします:

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);

-->

つまり、評価を行います。

ザック、Maintainable framework's ORMをチェックしてください。 http://framework.maintainable.com/mvc/3_model.php#c3。 7 よく読んでください、きっとあなたはそれを好きになるでしょう。私はこれをより詳細に投稿します: 最も簡単に使用できるPHPのORMフレームワークは何ですか?

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top