Existe-t-il une bonne bibliothèque de mappage relationnel-objet pour PHP?
Je connais PDO / ADO, mais ils semblent seulement fournir une abstraction des différences entre les fournisseurs de bases de données et non une correspondance réelle entre le modèle de domaine et le modèle relationnel. Je recherche une bibliothèque PHP qui fonctionne de la même manière que Hibernate pour Java et NHibernate pour .NET.
Il n'y en a que deux bons: Doctrine et Propel . Nous privilégions Doctrine, et cela fonctionne bien avec Symfony . Cependant, si vous recherchez un support de base de données en plus des principaux, vous devrez écrire votre propre code.
la source
Axon ORM fait partie du Framework Fat-Free - il dispose d'un mappeur à la volée. Pas de générateurs de code. Aucun fichier de configuration stupide XML / YAML . Il lit le schéma de la base de données directement depuis le backend, donc dans la plupart des opérations CRUD , vous n'avez même pas à étendre un modèle de base. Il fonctionne avec tous les principaux moteurs de base de données pris en charge par PDO : MySQL , SQLite , SQL Server / Sybase, Oracle, PostgreSQL , etc.
Surtout, le plug-in et la couche d'accès aux données SQL qui l'accompagne sont tout aussi légers que le framework: 14 Ko (Axon) + 6 Ko (SQLdb). Sans gras ne fait que 55 Ko.
la source
$product->load('product_id=123')
dans un exemple.$product->load(array('product_id=:id',array(':id'=>123)));
J'ai développé Pork.dbObject moi-même. (Une simple mise en œuvre de PHP ORM et Active Record) La raison principale est que je trouve la plupart des ORM trop lourds.
La pensée principale de Pork.dbObejct est d'être légère et simple à installer. Pas de tas de fichiers XML, juste un appel de fonction dans le constructeur pour le lier, et une addRelation ou addCustomRelation pour définir une relation avec un autre dbObject.
Donnez-lui un coup d'oeil: Pork.dbObject
la source
Essayez Doctrine2 . C'est probablement l'outil ORM le plus puissant pour PHP. Je le mentionne séparément de Doctrine 1, car c'est un logiciel complètement différent. Il a été réécrit à partir de zéro, est toujours en phase bêta, mais il est maintenant utilisable et développé.
C'est un ORM très complexe, mais bien conçu. Beaucoup de magie de la Doctrine 1 originale a disparu. Il fournit une solution complète et vous pouvez écrire votre propre ORM au-dessus de Doctrine2 ou utiliser une seule de ses couches .
la source
Je viens de commencer avec Kohana , et il semble le plus proche de Ruby on Rails sans invoquer toute la complexité de plusieurs fichiers de configuration comme avec Propel .
la source
Découvrez l' ORM de sortie . Il est plus simple que Propel et Doctrine et il fonctionne de manière similaire à Hibernate, mais avec plus de sensations PHP.
la source
J'aime vraiment Propel , ici vous pouvez avoir un aperçu, la documentation est assez bonne, et vous pouvez l'obtenir via PEAR ou SVN.
Vous avez seulement besoin d'une installation PHP5 fonctionnelle et de Phing pour commencer à générer des classes.
la source
J'ai trouvé des classes liées à ORM dans la bibliothèque PHP Flourish .
la source
Vous devriez vérifier Idiorm et Paris .
la source
Donnez un coup de main à dORM, un mappeur relationnel objet pour PHP 5 . Il prend en charge toutes sortes de relations (1 à 1), (1 à plusieurs), (plusieurs à plusieurs) et types de données. Il est totalement discret: aucune génération de code ou extension de classe n'est requise. À mon avis, il est supérieur à tout ORM, Doctrine et Propel inclus. Cependant, il est toujours en version bêta et pourrait changer considérablement au cours des prochains mois. http://www.getdorm.com
Il a également une très petite courbe d'apprentissage. Les trois principales méthodes que vous utiliserez sont:
la source
Je travaille actuellement sur phpDataMapper , qui est un ORM conçu pour avoir une syntaxe simple comme le projet Datamapper de Ruby. C'est encore au début du développement, mais cela fonctionne très bien.
la source
J'ai eu de grandes expériences avec Idiorm et Paris . Idiorm est une petite bibliothèque ORM simple. Paris est une implémentation Active Record tout aussi simple basée sur Idiorm. C'est pour PHP 5.2+ avec PDO. C'est parfait si vous voulez quelque chose de simple que vous pouvez simplement déposer dans une application existante.
la source
J'ai essayé l' ORM de la bibliothèque Flourish .
la source
Jusqu'à la sortie de PHP 5.3, ne vous attendez pas à avoir un bon ORM. C'est une limitation OO de PHP.
la source
Mon ami Kien et moi avons amélioré une version antérieure d'un ORM qu'il avait écrit avant PHP 5.3. Nous avons essentiellement porté sur PHP l' enregistrement actif de Ruby on Rails . Il manque encore certaines fonctionnalités clés que nous voulons, telles que les transactions, la prise en charge de la clé primaire composite, quelques adaptateurs supplémentaires (seuls MySQL et SQLite 3 fonctionnent actuellement). Mais, nous sommes très près de terminer ce genre de choses. Vous pouvez jeter un œil à PHP ActiveRecord avec PHP 5.3 .
la source
Essayez PHP ADOdb.
Je ne peux pas dire que c'est le meilleur, car je n'ai pas utilisé les autres. Mais c'est rapide, il prend en charge Memcached et la mise en cache.
Et c'est beaucoup plus rapide que DB / Select de Zend Framework .
la source
Jetez un oeil à l' ORM LEAP pour Kohana . Il fonctionne avec un tas de bases de données, notamment DB2 , Drizzle , Firebird , MariaDB , SQL Server, MySQL , Oracle, PostgreSQL et SQLite . Avec une simple fonction de chargement automatique, il peut fonctionner avec presque tous les frameworks PHP. Le code source est sur GitHub à https://github.com/spadefoot/kohana-orm-leap . Vous pouvez consulter les didacticiels de LEAP en ligne.
La bibliothèque ORM fonctionne avec des clés primaires non entières et des clés composites. Les connexions sont gérées via un pool de connexions de base de données et cela fonctionne avec des requêtes SQL brutes. L'ORM a même un générateur de requêtes qui rend la construction d'instructions SQL super simple.
la source
Vous pouvez consulter Repose si vous vous sentez aventureux. Comme Outlet , il s'inspire d' Hibernate .
Il est encore très tôt dans son développement, mais jusqu'à présent, les seules restrictions sur le modèle de domaine sont que les classes ne sont pas marquées finales et les propriétés ne sont pas marquées privées. Une fois arrivé au pays de PHP> = 5.3, j'essaierai également d'implémenter le support des propriétés privées.
la source
Si vous recherchez un ORM qui implémente le paradigme Data Mapper plutôt que Active Record spécifiquement, alors je vous suggère fortement de jeter un œil à GacelaPHP .
Caractéristiques de Gacela:
D'autres solutions ORM sont trop gonflées ou ont des limitations lourdes lors du développement de quelque chose de compliqué à distance. Gacela résout les limites de l'approche d'enregistrement actif en implémentant le modèle de mappeur de données tout en limitant au minimum le gonflement en utilisant PDO pour toutes les interactions avec la base de données et Memcached.
la source
MicroMVC a un ORM de 13 Ko qui ne repose que sur une classe de base de données de 8 Ko . Il renvoie également tous les résultats en tant qu'objets ORM eux-mêmes et utilise une liaison statique tardive pour éviter d'incorporer des informations sur la table et les métadonnées de l'objet actuel dans chaque objet. Il en résulte les frais généraux ORM les moins chers qui existent.
Il fonctionne avec MySQL , PostgreSQL et SQLite .
la source
ORM brésilien: http://www.hufersil.com.br/lumine . Il fonctionne avec PHP 5.2+. À mon avis, c'est le meilleur choix pour les Portugais et les Brésiliens, car il a une documentation facile à comprendre et de nombreux exemples à télécharger.
la source
Agile Toolkit possède sa propre implémentation unique d'ORM / ActiveRecord et de SQL dynamique .
Introduction: http://agiletoolkit.org/intro/1
Syntaxe (enregistrement actif):
Syntaxe (Dynamic SQL):
Alors que Dynamic SQL et Active Record / ORM sont directement utilisables, Agile Toolkit les intègre davantage avec l'interface utilisateur et l'interface utilisateur jQuery . Ceci est similaire à JSF mais écrit en PHP pur.
Cela affichera AJAXified CRUD avec pour le modèle Employé.
la source
NotORM
la source
PHP ORM Faces pour l'extension PDO. Voir PHP Faces Framework .
la source
Regardez http://code.google.com/p/lworm/ . Il s'agit d'un système ORM très simple, mais puissant et léger pour PHP. Vous pouvez également l'étendre facilement si vous le souhaitez.
la source
Un autre grand ORM PHP open source que nous utilisons est PHPSmartDb . Il est stable et rend votre code plus sûr et plus propre. La fonctionnalité de base de données qu'elle contient est de loin la plus simple que j'ai jamais utilisée avec PHP 5.3.
la source
La doctrine est probablement votre meilleur pari. Avant Doctrine, DB_DataObject était essentiellement le seul autre utilitaire à source ouverte.
la source
Si vous cherchez un ORM, comme Hibernate , vous devriez regarder PMO .
Il peut être facilement intégré dans une architecture SOA (il n'y a qu'une classe de webservice à développer).
la source