¿Existe una buena biblioteca de mapeo relacional de objetos para PHP?
Sé de PDO / ADO, pero parece que solo proporcionan abstracción de las diferencias entre los proveedores de bases de datos, no un mapeo real entre el modelo de dominio y el modelo relacional. Estoy buscando una biblioteca PHP que funcione de manera similar a como Hibernate lo hace para Java y NHibernate lo hace para .NET.
Solo hay dos buenos: Doctrine y Propel . Estamos a favor de Doctrine, y funciona bien con Symfony . Sin embargo, si está buscando soporte de base de datos además de los principales, tendrá que escribir su propio código.
fuente
Axon ORM es parte del Marco sin grasas : presenta un mapeador sobre la marcha. No hay generadores de código. No hay archivos estúpidos de configuración XML / YAML . Lee el esquema de la base de datos directamente desde el back-end, por lo que en la mayoría de las operaciones CRUD ni siquiera tiene que extender un modelo base. Funciona con todos los principales motores de bases de datos compatibles con PDO : MySQL , SQLite , SQL Server / Sybase, Oracle, PostgreSQL , etc.
Sobre todo, el complemento y la capa de acceso a datos SQL que lo acompaña son tan livianos como el marco: 14 KB (Axon) + 6 KB (SQLdb). Sin grasa es solo 55 KB.
fuente
$product->load('product_id=123')
en un ejemplo.$product->load(array('product_id=:id',array(':id'=>123)));
He estado desarrollando Pork.dbObject por mi cuenta. (Una implementación simple de PHP ORM y Active Record) La razón principal es que encuentro que la mayoría de los ORM son demasiado pesados.
La idea principal de Pork.dbObejct es ser liviano y fácil de configurar. No hay un montón de archivos XML, solo una llamada de función en el constructor para vincularlo, y un addRelation o addCustomRelation para definir una relación con otro dbObject.
Dale un vistazo: Pork.dbObject
fuente
Prueba Doctrine2 . Es probablemente la herramienta ORM más poderosa para PHP. Lo menciono por separado de Doctrine 1, porque es una pieza de software completamente diferente. Ha sido reescrito desde cero, todavía está en fase beta, pero ahora se puede usar y desarrollar.
Es un ORM muy complejo, pero bien diseñado. Mucha magia de la Doctrina original 1 desapareció. Proporciona una solución completa, y puede escribir su propio ORM sobre Doctrine2 o usar solo una de sus capas .
fuente
Acabo de comenzar con Kohana , y parece ser el más cercano a Ruby on Rails sin invocar toda la complejidad de múltiples archivos de configuración como con Propel .
fuente
Echa un vistazo a Outlet ORM . Es más simple que Propel y Doctrine y funciona de manera similar a Hibernate, solo que tiene una sensación de PHP.
fuente
Realmente me gusta Propel , aquí puedes obtener una visión general, la documentación es bastante buena y puede obtenerla a través de PEAR o SVN.
Solo necesita una instalación PHP5 que funcione y Phing para comenzar a generar clases.
fuente
Encontré clases relacionadas con ORM en la biblioteca PHP Flourish .
fuente
Deberías visitar Idiorm y París .
fuente
Dale una oportunidad a dORM, un mapeador relacional de objetos para PHP 5 . Admite todo tipo de relaciones (1 a 1), (1 a muchos), (muchos a muchos) y tipos de datos. Es completamente discreto: no se requiere generación de código ni extensión de clase. En mi opinión, es superior a cualquier ORM, Doctrine y Propel incluidos. Sin embargo, todavía está en beta y podría cambiar significativamente en los próximos dos meses. http://www.getdorm.com
También tiene una curva de aprendizaje muy pequeña. Los tres métodos principales que usará son:
fuente
Actualmente estoy trabajando en phpDataMapper , que es un ORM diseñado para tener una sintaxis simple como el proyecto Datamapper de Ruby. Todavía está en desarrollo temprano también, pero funciona muy bien.
fuente
He tenido grandes experiencias con Idiorm y París . Idiorm es una biblioteca ORM pequeña y simple. Paris es una implementación igualmente activa de Active Record basada en Idiorm. Es para PHP 5.2+ con PDO. Es perfecto si desea algo simple que simplemente puede colocar en una aplicación existente.
fuente
Probé el ORM de la biblioteca Flourish .
fuente
Hasta la versión PHP 5.3 no espere tener un buen ORM. Es una limitación OO de PHP.
fuente
Mi amigo Kien y yo hemos mejorado una versión anterior de un ORM que había escrito antes de PHP 5.3. Básicamente, hemos trasladado el Registro Activo de Ruby on Rails a PHP. Todavía carece de algunas características clave que queremos, como transacciones, soporte de clave primaria compuesta, algunos adaptadores más (solo MySQL y SQLite 3 funcionan en este momento). Pero, estamos muy cerca de terminar esto. Puede echar un vistazo a PHP ActiveRecord con PHP 5.3 .
fuente
Prueba PHP ADOdb.
No puedo decir que sea lo mejor, porque no he usado los otros. Pero es rápido, es compatible con Memcached y el almacenamiento en caché.
Y es muchísimo más rápido que el DB / Select de Zend Framework .
fuente
Echa un vistazo a LEAP ORM para Kohana . Funciona con un montón de bases de datos, que incluyen DB2 , Drizzle , Firebird , MariaDB , SQL Server, MySQL , Oracle, PostgreSQL y SQLite . Con una función de carga automática simple, puede funcionar con casi cualquier marco PHP. El código fuente está en GitHub en https://github.com/spadefoot/kohana-orm-leap . Puedes pagar los tutoriales de LEAP en línea.
La biblioteca ORM funciona con claves primarias no enteras y claves compuestas. Las conexiones se administran a través de un grupo de conexiones de base de datos y funciona con consultas SQL sin procesar. El ORM incluso tiene un generador de consultas que hace que la creación de sentencias SQL sea súper simple.
fuente
Puede consultar Repose si se siente aventurero. Al igual que Outlet , está modelado a partir de Hibernate .
Todavía es muy temprano en su desarrollo, pero hasta ahora las únicas restricciones en el modelo de dominio son que las clases no están marcadas como finales y las propiedades no están marcadas como privadas. Una vez que llegue a la tierra de PHP> = 5.3, también intentaré implementar el soporte para propiedades privadas.
fuente
Si está buscando un ORM que implemente el paradigma de Data Mapper en lugar de Active Record específicamente, le sugiero que eche un vistazo a GacelaPHP .
Gacela cuenta con:
Otras soluciones ORM están demasiado hinchadas o tienen limitaciones onerosas cuando se desarrolla algo remotamente complicado. Gacela resuelve las limitaciones del enfoque de registro activo mediante la implementación del patrón del mapeador de datos mientras mantiene la hinchazón al mínimo utilizando PDO para todas las interacciones con la base de datos y Memcached.
fuente
MicroMVC tiene un ORM de 13 KB que solo se basa en una clase de base de datos de 8 KB . También devuelve todos los resultados como objetos ORM y utiliza el enlace estático tardío para evitar incrustar información sobre la tabla del objeto actual y los metadatos en cada objeto. Esto da como resultado la sobrecarga de ORM más barata que existe.
Funciona con MySQL , PostgreSQL y SQLite .
fuente
ORM brasileño: http://www.hufersil.com.br/lumine . Funciona con PHP 5.2+. En mi opinión, es la mejor opción para los portugueses y brasileños, porque tiene documentación fácil de entender y muchos ejemplos para descargar.
fuente
Agile Toolkit tiene su propia implementación única de ORM / ActiveRecord y SQL dinámico .
Introducción: http://agiletoolkit.org/intro/1
Sintaxis (registro activo):
Sintaxis (SQL dinámico):
Mientras que Dynamic SQL y Active Record / ORM se pueden usar directamente, Agile Toolkit los integra aún más con la interfaz de usuario y la interfaz de usuario jQuery . Esto es similar a JSF pero escrito en PHP puro.
Esto mostrará CRUD AJAXified con el modelo de Empleado.
fuente
NotORM
fuente
Caras PHP ORM para la extensión PDO. Ver PHP Faces Framework .
fuente
Mira http://code.google.com/p/lworm/ . Es un sistema ORM realmente simple, pero potente y liviano para PHP. También puede extenderlo fácilmente, si lo desea.
fuente
Otro gran ORM PHP de código abierto que usamos es PHPSmartDb . Es estable y hace que su código sea más seguro y limpio. La funcionalidad de la base de datos es sin duda la más fácil que he usado con PHP 5.3.
fuente
La doctrina es probablemente tu mejor apuesta. Antes de Doctrine, DB_DataObject era esencialmente la única otra utilidad de código abierto.
fuente
Si está buscando un ORM, como Hibernate , debería haber mirado PMO .
Se puede integrar fácilmente en una arquitectura SOA (solo hay una clase de servicio web para desarrollar).
fuente