2008-10-21 5 views
1

Dans une question précédente, j'ai posé des questions sur diverses bibliothèques ORM. Il s'avère que Kohana a l'air très propre et fonctionnel pour ORM. J'ai déjà un framework MVC dans lequel je travaille. Si je ne veux pas l'exécuter en tant que framework, quel est le bon groupe de fichiers à inclure pour me donner les fichiers de classe de base DB et ORM?Est-il possible d'installer des bibliothèques Kohana pour ORM en PHP sans utiliser l'intégralité du framework?

Mise à jour:

Je sursautai et commencé à regarder le code source ORM .. Une chose est immédiatement source de confusion pour moi .. toutes les classes ORM ont le nom de classe en annexe avec _Core-à-dire ORM_Core ORM_Iterator_Core, mais le code partout s'étend la classe ORM. Le problème est, j'ai cherché la base de code entière de 6 manières différentes, et je n'ai jamais vu une définition de classe ORM plaine ni une interface ORM def ou n'importe quoi. Quelqu'un pourrait m'éclairer sur où cette magie se produit?

Répondre

5

Pourquoi ne pas juste un

class ORM extends ORM_Core {} 

quelque part dans votre code? Cela supprime le besoin d'utiliser le code du chargeur. Vous aurez également besoin de Kohana_Exception, de la bibliothèque de base de données (et du pilote approprié), Kohana :: config(), Kohana :: auto_load(), Kohana :: log() méthodes (recherchez Database.php pour celles-ci). Kohana est un excellent framework MVC, mais pas vraiment conçu pour être démonté en morceaux comme ça. Vous pouvez également rechercher Doctrine, un autre ORM pour PHP (qui est conçu pour être autonome)

+0

Oui, c'est correct. Juste en train de creuser le code pour trouver ce dont j'ai besoin. C'est un peu plus difficile car les fichiers d'inclusion nécessaires ne sont pas "requis" en haut, mais pas de plaintes quand j'obtiens le code libre. – Zak

3

Il se avère que Kohana utilise la magie chargement de classe de telle sorte que si une classe définie avec une extention _Core n'existe pas en tant que classe

-à-dire ORM_Core existe, mais ORM ne pas, donc Kohana définira comme par magie une Classe ORM Étant donné que le package utilise un chargement de classe 100% magique.

Dans le cas où quelqu'un est intéressé, je documenter mes trouvailles ici afin que chacun puisse trouver plus tard:

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

--> 

Il ne eval ..

Questions connexes