Можно ли установить библиотеки Kohana для ORM в PHP без использования всего фреймворка? - PullRequest
1 голос
/ 22 октября 2008

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

Обновление:

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

Ответы [ 4 ]

5 голосов
/ 22 октября 2008

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

class ORM extends ORM_Core {} 

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

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

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

3 голосов
/ 22 октября 2008

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

т.е. ORM_Core существует, но ORM не существует, поэтому Кохана волшебным образом определит класс 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);

-->

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

1 голос
/ 25 ноября 2008

Зак, проверьте ORM Поддерживаемого фреймворка. http://framework.maintainable.com/mvc/3_model.php#c3.7 Прочитайте внимательно, я уверен, вам понравится. Я размещаю это более подробно в: Какой самый простой в использовании фреймворк ORM для PHP?

0 голосов
/ 01 мая 2009

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

Это все, что вам нужно !!

...