¿Es posible instalar las bibliotecas de Kohana para ORM en PHP sin utilizar todo el marco?

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

  •  03-07-2019
  •  | 
  •  

Pregunta

En una pregunta anterior, pregunté acerca de varias bibliotecas ORM. Resulta que Kohana se ve muy limpia pero funcional para los propósitos de ORM. Sin embargo, ya tengo un framework MVC en el que estoy trabajando. Si no quiero ejecutarlo como un marco, ¿cuál es el conjunto de archivos correcto para incluir solo para darme los archivos de clase base DB y ORM?

Actualización:

Salté y comencé a mirar el código fuente de ORM ... Una cosa me confundió de inmediato ... todas las clases de ORM tienen el nombre de la clase anexado con _CORE, es decir, ORM_Core ORM_Iterator_Core, pero el código en todas partes está extendiendo la clase de ORM. El problema es que he buscado en todo el código base de 6 maneras diferentes, y nunca he visto una definición de clase ORM simple ni una definición de interfaz ORM ni nada ... ¿Podría alguien iluminarme sobre dónde ocurre esa magia?

¿Fue útil?

Solución

¿Por qué no solo tener un

class ORM extends ORM_Core {} 

en algún lugar de tu código? Esto elimina la necesidad de utilizar cualquiera de los códigos del cargador.

También necesitarás Kohana_Exception, la biblioteca de base de datos (y un controlador apropiado), Kohana :: config (), Kohana :: auto_load (), Kohana :: log () métodos (busca Database.php para esos).

Kohana es un excelente marco MVC, pero no está realmente diseñado para ser desarmado en partes como esa. También puede investigar Doctrine , otro ORM para PHP (que está diseñado para ser independiente)

Otros consejos

Resulta que Kohana utiliza la carga de clases mágicas, de modo que si una clase definida con una extensión _Core no existe como una clase

es decir, ORM_Core existe, pero ORM no, así que Kohana definirá mágicamente una clase ORM Dado que el paquete utiliza 100% de carga de clase mágica.

En caso de que alguien esté interesado, estoy documentando mis hallazgos aquí para que todos puedan encontrarlo más adelante:

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

-->

Así que hace una evaluación ..

Zak, verifique el ORM del marco mantenible. http://framework.maintaining.com/mvc/3_model.php#c3. 7 Lea detenidamente, estoy seguro de que te gustará. Publico esto con más detalle en: ¿Cuál es el marco ORM más fácil de usar para PHP?

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top