好的PHP ORM库?

时间:2020-03-06 14:29:18  来源:igfitidea点击:

是否有一个适用于PHP的良好的对象关系映射库?

我知道PDO / ADO,但是它们似乎仅提供数据库供应商之间差异的抽象,而不是域模型和关系模型之间的实际映射。我正在寻找一个PHP库,其功能类似于Hibernate对Java和NHibernate对.NET所做的方式。

解决方案

看学说。

原则1.2实现了Active Record。 Doctrine 2+是DataMapper ORM。

另外,请查看Xyster。它基于数据映射器模式。

另外,看看DataMapper与Active Record。

只有两个好人:教义和Propel。我们赞成Doctrine,它与Symfony一起使用时效果很好。但是,如果我们除了主要数据库之外还需要数据库支持,则必须编写自己的代码。

主义可能是我们最好的选择。在Doctrine之前,DB_DataObject本质上是唯一开源的其他实用程序。

我真的很喜欢Propel,在这里我们可以获取概述,文档非常好,并且可以通过PEAR或者SVN获得。

我们只需要有效的PHP5安装和Phing即可开始生成类。

我一直在自己开发Pork.dbObject。 (一个简单的PHP ORM和Active Record实现)
主要原因是我发现大多数ORM太繁重。

Pork.dbObejct的主要思想是重量轻且易于设置。没有一堆XML文件,只有构造函数中的一个函数将其绑定,还有addRelation或者addCustomRelation来定义与另一个dbObject的关系。

看看:Pork.dbObject

查看出口ORM。它比Propel和Doctrine更简单,并且与Hibernate相似,但带有更多的PHP感觉。

我只是从Kohana开始的,它似乎最接近Ruby on Rails,却没有像Propel那样调用多个配置文件的所有复杂性。

如果我们喜欢冒险,可以查看Repose。像Outlet一样,它是基于Hibernate建模的。

它的开发还处于初期,但是到目前为止,对域模型的唯一限制是这些类未标记为final且属性未标记为private。一旦进入PHP> = 5.3领域,我还将尝试实现对私有属性的支持。

我目前正在研究phpDataMapper,这是一个ORM,旨在具有简单的语法,例如Ruby的Datamapper项目。它也仍处于早期开发中,但是效果很好。

在PHP 5.3发行之前,不要指望拥有良好的ORM。这是PHP的OO限制。

试一下dORM,它是PHP 5的对象关系映射器。它支持各种关系(一对一),(一对多),(一对多)和数据类型。它是完全毫不干扰的:不需要代码生成或者类扩展。在我看来,它比任何ORM(包括Doctrine和Propel)都优越。但是,它仍处于测试阶段,并且可能在接下来的几个月中发生重大变化。 http://www.getdorm.com

它的学习曲线也很小。我们将使用的三种主要方法是:

<?php 
$object = $dorm->getClassName('id_here');
$dorm->save($object);
$dorm->delete($object);

如果我们正在寻找像Hibernate这样的ORM,则应该考虑PMO。

可以轻松地将其集成到SOA体系结构中(只有一个Web服务类可以开发)。

试试RedBean,它需要:

  • 没有配置
  • 没有数据库(它可以动态创建所有内容)
  • 没有型号
  • 等等。

它甚至为我们完成所有锁定和事务处理,并在后台监视性能。 (哎呀!它甚至还可以进行垃圾回收...。)最重要的是……我们不必编写任何代码……代码……耶稣,ORM层,救了我!

我的朋友Kien和我改进了他在PHP 5.3之前编写的ORM的早期版本。实际上,我们已经将Ruby on Rails的Active Record移植到了PHP。它仍然缺少我们想要的一些关键功能,例如事务,复合主键支持,更多的适配器(目前只有MySQL和SQLite 3可以工作)。但是,我们非常接近完成这些工作。我们可以看看带有PHP 5.3的PHP ActiveRecord。

尝试使用PHP ADOdb。

我不能说这是最好的,因为我没有使用过其他的。但是它很快,它支持Memcached和缓存。

而且它比Zend Framework的DB / Select更快。

用于PDO扩展的PHP ORM Faces。参见PHP Faces框架。

$urun = new Product();
$urun->name='CPU'
$urun->prince='124';
$urun->save();

QCubed框架中包含一个很棒的ORM。它基于代码生成和脚手架。与基于反射并且通常比较慢的ActiveRecord不同,代码生成会根据数据库为我们创建框架类,并让我们随后对其进行自定义。它像一种魅力。

尝试Doctrine2. 它可能是PHP中功能最强大的ORM工具。我将它与教义1分开提及,因为它是完全不同的软件。它是从头开始重写的,仍处于测试阶段,但是现在可以使用并开发了。

这是一个非常复杂的ORM,但设计合理。原始主义1的许多魔术消失了。它提供了完整的解决方案,我们可以在Doctrine2之上编写自己的ORM或者仅使用其一层。

Axon ORM是无脂肪框架的一部分,它具有动态映射器。没有代码生成器。没有愚蠢的XML / YAML配置文件。它直接从后端读取数据库模式,因此在大多数CRUD操作中,我们甚至不必扩展基本模型。它可与所有主要的PDO支持的数据库引擎一起使用:MySQL,SQLite,SQLServer / Sybase,Oracle,PostgreSQL等。

/* 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();

最重要的是,插件和随附的SQL数据访问层与框架一样轻巧:14KB(Axon)+ 6KB(SQLdb)。无脂肪只有55KB。

我在PHP库Flourish中找到了与ORM相关的类。

尝试了蓬勃发展的图书馆的ORM。

查看http://code.google.com/p/lworm/。这是一个非常简单但功能强大的轻量级ORM系统,适用于PHP。如果需要,我们也可以轻松扩展它。