Est-il possible d'installer des bibliothèques Kohana pour ORM en PHP sans utiliser tout le framework?

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

  •  03-07-2019
  •  | 
  •  

Question

Dans une question précédente, j'avais posé des questions sur différentes bibliothèques ORM. Il s'avère que Kohana a l'air très propre mais fonctionnel pour les besoins de l'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 ensemble de fichiers à inclure pour me donner simplement les fichiers de classe de base DB et ORM?

Mise à jour:

J'ai sauté dedans et j'ai commencé à regarder le code source ORM .. Une chose m'a tout de suite embrouillé .. le nom de classe de toutes les classes ORM est ajouté avec _CORE, c'est-à-dire ORM_Core ORM_Iterator_Core, mais le code étend partout la classe ORM. Le problème, c’est que j’ai cherché dans la base de code entière de 6 manières différentes, et je n’ai jamais vu de définition de classe ORM simple, ni d’interface de définition (ORM) ou autre chose. Quelqu'un pourrait-il m'expliquer où cette magie se produit?

Était-ce utile?

La solution

Pourquoi ne pas simplement avoir un

class ORM extends ORM_Core {} 

quelque part dans votre code? Cela supprime la nécessité d’utiliser tout code de chargeur.

Vous aurez également besoin de Kohana_Exception, de la bibliothèque de base de données (et du pilote appropraite), de Kohana :: config (), de Kohana :: auto_load (), de méthodes Kohana :: log () (recherchez Database.php pour ces méthodes).

Kohana est un excellent framework MVC, mais pas vraiment conçu pour être démonté en morceaux comme celui-là. Vous voudrez peut-être également examiner Doctrine , un autre ORM pour PHP (conçu pour être autonome).

Autres conseils

Il s'avère que Kohana utilise le chargement de classe magique de sorte que si une classe définie avec une extension _Core n'existe pas en tant que classe

i.e. ORM_Core existe, mais pas ORM, donc Kohana définira comme par magie une classe ORM. Puisque le paquet utilise 100% du chargement de classe magique.

Si cela vous intéresse, je documente mes trouvailles ici pour que tout le monde puisse les retrouver 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);

-->

Donc, il fait une évaluation.

Zak, vérifiez l'ORM de l'infrastructure maintenable. http://framework.maintainable.com/mvc/3_model.php#c3. 7 Lisez attentivement, je suis sûr que vous allez l’aimer. Je poste ceci plus en détail dans: Quel est le framework le plus facile à utiliser pour PHP avec ORM?

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top