Is it possible to install Kohana libraries for ORM in PHP without using the entire framework?

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

  •  03-07-2019
  •  | 
  •  

Question

In a previous question, I asked about various ORM libraries. It turns out Kohana looks very clean yet functional for the purposes of ORM. I already have an MVC framework that I am working in though. If I don't want to run it as a framework, what is the right fileset to include to just give me the DB and ORM base class files?

Update:

I jumped in and started looking at the ORM source code.. One thing was immediately confusing to me.. all the ORM classes have the class name appended with _CORE i.e. ORM_Core ORM_Iterator_Core, but the code everywhere is extending the ORM class. Problem is, I've searched the whole code base 6 different ways, and I've never seen a plain ORM class def nor an ORM interface def or anything.. Could someone enlighten me on where that magic happens?

Was it helpful?

Solution

Why not just have a

class ORM extends ORM_Core {} 

somewhere in your code? This removes the need to use any of the loader code.

You'll also need Kohana_Exception, the Database library (and appropraite driver), Kohana::config(), Kohana::auto_load(), Kohana::log() methods (search Database.php for those).

Kohana is a great MVC framework, but not really designed to be taken apart in chunks like that. You may want to also investigate Doctrine, another ORM for PHP (that IS designed to be stand-alone)

OTHER TIPS

It turns out that Kohana uses magic class loading so that if a defined class with an _Core extention doesn't exist as a class

i.e. ORM_Core exists, but ORM doesn't, so Kohana will magically define an ORM class Since the package uses 100% magic class loading.

In case anyone is interested, I'm documenting my finds here so everyone can find it later:

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

-->

So it does an eval..

Zak, check Maintainable framework's ORM. http://framework.maintainable.com/mvc/3_model.php#c3.7 Read thoroughly, I am sure you'll like it. I post this in more detail in: What is the easiest to use ORM framework for PHP?

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top