好用的PHP ORM库?

267

有没有适用于PHP的好的对象关系映射库?

我知道 PDO/ADO,但它们似乎只提供了对不同数据库厂商之间差异的抽象,并没有提供领域模型和关系模型之间实际的映射。我正在寻找一种类似于Java中的Hibernate 或 .NET 中的 NHibernate 的 PHP 库。

36个回答

2
敏捷工具包”拥有其独特的ORM/ActiveRecord实现和“动态SQL”。
介绍:http://agiletoolkit.org/intro/1 语法(Active Record):
$emp=$this->add('Model_Employee');
$emp['name']='John';
$emp['salary']=500;
$emp->save();

语法(动态SQL):
$result = $emp->count()->where('salary','>',400)->getOne();

虽然动态SQL和Active Record/ORM可以直接使用,但Agile Toolkit进一步将它们与用户界面和jQuery UI集成。这类似于JSF,但是用纯PHP编写。
$this->add('CRUD')->setModel('Employee');

这将显示使用 AJAX 的 Employee 模型的 CRUD

2
如果您正在寻找一种实现数据映射器模式而不是特定于Active Record的ORM,那么我强烈建议您看看 GacelaPHP
Gacela的特点包括:
  • 数据映射器
  • 外键映射
  • 关联映射
  • 依赖映射
  • 具体表继承
  • 查询对象
  • 元数据映射
  • 惰性和急切加载
  • 完整支持 Memcached
其他ORM解决方案在开发任何稍微复杂的东西时都过于臃肿或有负担沉重的限制。通过使用PDO与数据库和Memcached进行所有交互,Gacela通过实现数据映射器模式来解决活动记录方法的限制,并将膨胀最小化。

又是一个坏链接。看一下它会很好的。 - jgarcias

2
你可以尝试使用Repose,如果你想要一些冒险。它像Outlet一样,以Hibernate为模型。
它的开发仍处于早期阶段,但目前领域模型上唯一的限制是类没有被标记为final,属性也没有被标记为private。一旦我进入PHP >= 5.3的世界,我将尝试实现对私有属性的支持。

2
MicroMVC有一个13KB的ORM,仅依赖于一个8KB的数据库类。它还将所有结果作为ORM对象本身返回,并使用后期静态绑定来避免将关于当前对象表和元数据的信息嵌入到每个对象中。这导致了最便宜的ORM开销。
它可以与MySQL、PostgreSQL和SQLite一起使用。

2

NotORM

include "NotORM.php";
 $pdo = new PDO("mysql:dbname=software");
 $db = new NotORM($pdo);
 $applications = $db->application()
->select("id, title")
->where("web LIKE ?", "http://%")
->order("title")
->limit(10)
;
foreach ($applications as $id => $application) {
echo "$application[title]\n";
}

1

QCubed框架中包含了一个非常棒的ORM;它基于代码生成和脚手架。与基于反射并且通常较慢的ActiveRecord不同,代码生成会根据数据库为您生成骨架类,并允许您在之后进行自定义。它运行得非常顺畅。


1
看看http://code.google.com/p/lworm/吧。这是一个非常简单但功能强大的轻量级PHP ORM系统。如果你想的话,你也可以很容易地扩展它。

1

我们使用的另一个伟大的开源PHP ORM是PHPSmartDb。它稳定可靠,可以使您的代码更加安全和清晰。其中的数据库功能是我在使用PHP 5.3中最容易使用的。


1
看了一下Syrius ORM。这是一个新的ORM,该项目目前处于开发阶段,但在接下来的一个月内将发布1.0版本。

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接