267 votes

Bon ORM PHP bibliothèque ?

Y a-t-il une bonne bibliothèque de mapping objet-relationnel pour PHP ?

Je connais des AOP/ADO, mais ils semblent offrir seulement abstraction des différences entre les vendeurs pas un réels mappage entre le modèle de domaine et le modèle relationnel de la base de données. Je cherche une bibliothèque PHP que fonctions similaire à la façon dont Hibernate ne pour Java et NHibernate pour .NET.

118voto

Ian P Points 7930

Regardez dans la Doctrine.

La Doctrine 1.2 implémente l'Enregistrement Actif. Doctrine 2+ est un DataMapper ORM.

Aussi, découvrez Xyster. Il est basé sur le modèle de Données Mappeur.

Aussi, jetez un oeil à DataMapper vs Active Record.

47voto

Ilya Kochetov Points 11641

Il n’y a que deux bons : Doctrine et Propel. Nous privilégions la Doctrine, et il fonctionne bien avec Symfony. Cependant si vous cherchez le support de base de données sans compter que les plus importants, vous devrez écrire votre propre code.

34voto

stillstanding Points 10346

Axon ORM est une partie de la Graisse Sans Cadre - il dispose d'une sur-la-mouche mappeur. Pas de générateurs de code. N'est stupide XML/YAML fichiers de configuration. Il lit le schéma de base de données directement depuis le backend, dans la plupart des CRUD opérations que vous n'avez même pas à étendre un modèle de base. Il fonctionne avec tous les principaux AOPsoutenu moteurs de base de données: MySQL, SQLite, SQL Server/Sybase, Oracle, PostgreSQL, etc.

/* SQL */
CREATE TABLE products (
    product_id INTEGER,
    description VARCHAR(128),
    PRIMARY KEY (product_id)
);

/* PHP */
// Create
$product=new Axon('products'); // Automatically reads the above schema
$product->product_id=123;
$product->description='Sofa bed';
$product->save(); // ORM knows it's a new record

// Retrieve
$product->load('product_id=123');
echo $product->description;

// Update
$product->description='A better sofa bed';
$product->save(); // ORM knows it's an existing record

// Delete
$product->erase();

La plupart de tous, le plug-in et d'accompagnement SQL couche d'accès aux données sont tout aussi léger que le cadre: 14 KO (Axone) + 6 KO (SQLdb). Sans gras est à seulement 55 KO.

28voto

SchizoDuckie Points 6420

J’ai mis au point Pork.dbObject sur le mien. (Une implémentation PHP ORM et enregistrement actif simple) La principale raison est que je trouve la plupart des ORMs trop lourd.

Les principaux pensé à Pork.dbObejct doit être léger et simple à mettre en place. Aucun tas de fichiers XML, appel de seule fonction dans le constructeur pour lier et un addRelation ou addCustomRelation permet de définir une relation à un autre dbObject.

Donnez-lui un coup d’oeil : Pork.dbObject

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X