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

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

  •  03-07-2019
  •  | 
  •  

Вопрос

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

Обновить:

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

Это было полезно?

Решение

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

class ORM extends ORM_Core {} 

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

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

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

Другие советы

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

т. е.ORM_Core существует, а ORM - нет, поэтому Kohana волшебным образом определит класс ORM Поскольку пакет использует 100% загрузку класса magic.

На случай, если кому-то интересно, я документирую свои находки здесь, чтобы каждый мог найти их позже:

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

-->

Таким образом, он выполняет оценку..

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top