2008-10-21 1 views
1

В предыдущем вопросе я спросил о различных библиотеках ORM. Оказывается, Kohana выглядит очень чистым, но функциональным для целей ORM. У меня уже есть структура MVC, в которой я работаю. Если я не хочу запускать его как фреймворк, какой правильный набор файлов включать, чтобы просто предоставить мне файлы базового класса базы данных и базы данных?Возможно ли установить библиотеки Kohana для ORM в PHP без использования всей структуры?

Update:

Я вскочил и начал смотреть на исходный код ORM .. Одно было сразу же сбивает с толку для меня .. все классы ОРМ имеют имя класса прилагаемую с _Core т.е. ORM_Core ORM_Iterator_Core, но код везде распространяется класс ORM. Проблема в том, что я искал всю базу кода 6 разными способами, и я никогда не видел простой класс ORM def, ни интерфейс ORM def или что-то еще. Может ли кто-нибудь просветить меня, где эта магия происходит?

ответ

5

Почему просто не имеет

class ORM extends ORM_Core {} 

где-то в вашем коде? Это устраняет необходимость использования любого кода загрузчика.

Вам также понадобится Kohana_Exception, библиотека базы данных (и подходящий драйвер), методы Kohana :: config(), Kohana :: auto_load(), Kohana :: log() (для них поиск по Database.php).

Kohana - отличная инфраструктура MVC, но не предназначенная для раздельного использования в таких кусках. Вы можете также изучить Doctrine, еще один ORM для PHP (который предназначен для автономной работы)

+0

Yup, это правильно. Просто копайте код, чтобы найти то, что мне нужно. Это немного сложнее, так как необходимые файлы с данными не «требуются» наверху, но никаких жалоб, когда я получаю бесплатный код. – Zak 2008-11-03 18:36:41

3

Оказывается, что Kohana использует магию загрузки класса, так что, если определенный класс с расширением _Core не существует как класс

т.е. ORM_Core существует, но ОРМ не делает, так Kohana волшебно определит ORM class Поскольку пакет использует загрузку магического класса 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); 

--> 

Так что делает Eval ..

Смежные вопросы