PHP有好的对象关系映射库吗?
我知道PDO/ADO,但它们似乎只提供了数据库供应商之间差异的抽象,而不是域模型和关系模型之间的实际映射。我正在寻找一个PHP库,功能类似于Hibernate为Java和NHibernate为. net做的方式。
查看学说。
教义1.2实现活动记录。原则2 +是一个DataMapper ORM。
另外,查看刮骨刀。它基于Data Mapper模式。
另外,看看DataMapper vs.活动记录。
好的只有两个:学说和推动。我们喜欢教条主义,它与Symfony一起工作得很好。然而,如果你正在寻找数据库支持之外的主要,你将不得不编写自己的代码。
教条主义可能是你最好的选择。在Doctrine之前,DB_DataObject本质上是唯一一个开源的实用程序。
我真的很喜欢推动, 在这里你可以得到一个概述,文档很好,你可以通过PEAR或SVN得到它。
你只需要一个工作的PHP5安装,和Phing开始生成类。
波克的主要思想。dbObejct是轻量级的,易于设置。没有一堆XML文件,只有构造函数中的一个函数调用来绑定它,以及一个addRelation或addCustomRelation来定义与另一个dbObject的关系。
看一下:Pork.dbObject
查看出口ORM。它比Propel和Doctrine更简单,它的工作原理类似于Hibernate,只是它有更多的PHP感觉。
我刚刚从Kohana开始,它似乎最接近Ruby on Rails,而不像推动那样调用多个配置文件的复杂性。
如果你喜欢冒险,你可以看看静止。像出口一样,它是根据Hibernate建模的。
它仍然处于开发的早期阶段,但到目前为止,域模型的唯一限制是类没有标记为final,属性没有标记为private。一旦我进入了PHP >= 5.3的领域,我将尝试实现对私有属性的支持。
我目前正在研究phpDataMapper,这是一个ORM,它被设计成具有简单的语法,就像Ruby的Datamapper项目。虽然它仍处于早期开发阶段,但效果非常好。
在PHP 5.3发布之前,不要期望有一个好的ORM。这是PHP的面向对象限制。
给dORM, PHP 5的对象关系映射器一个机会。它支持所有类型的关系(1对1)、(1对多)、(多对多)和数据类型。它完全不引人注目:不需要代码生成或类扩展。在我看来,它比任何ORM都要优越,包括Doctrine和Propel。然而,它仍处于测试阶段,并可能在未来几个月发生重大变化。http://www.getdorm.com
它的学习曲线也非常小。你将使用的三个主要方法是:
<?php $object = $dorm->getClassName('id_here'); $dorm->save($object); $dorm->delete($object);
如果你正在寻找一个ORM,比如Hibernate,你应该已经看过PMO了。
它可以很容易地集成到SOA体系结构中(只需要开发一个webservice类)。
尝试红豆,,它要求:
它甚至为您执行所有的锁定和事务,并在后台监视性能。(见鬼!它甚至做垃圾收集....)最棒的是……你不必写一首……代码行…耶稣救了我的命!
我的朋友Kien和我对他在PHP 5.3之前编写的ORM的早期版本进行了改进。我们实际上已经将Ruby on Rails的活动记录移植到PHP。它仍然缺少一些我们想要的关键特性,比如事务,复合主键支持,更多的适配器(目前只有MySQL和SQLite 3可用)。但是,我们已经非常接近完成这些工作了。你可以看看PHP ActiveRecord with PHP 5.3。
试试PHP ADOdb吧。
我不能说它是最好的,因为我没有用过其他的。但是它很快,它支持Memcached和缓存。
而且它比Zend框架的 DB/Select快得多。
PHP ORM面向PDO扩展。看到PHP Faces Framework。
$urun = new Product(); $urun->name='CPU' $urun->prince='124'; $urun->save();
有一个奇妙的ORM包含在QCubed框架;它基于代码生成和搭建。与基于反射的ActiveRecord不同,代码生成基于数据库为您生成骨架类,然后让您自定义它们。这招很管用。
Doctrine2试试。它可能是最强大的PHP ORM工具。我把它和教义一分开提,因为它是完全不同的软件。它是从头重写的,仍然处于测试阶段,但现在已经可以使用了。
这是一个非常复杂的ORM,但设计得很好。第一条教义中的很多魔法都消失了。它提供了一个完整的解决方案,你可以在Doctrine2上面写你自己的ORM或只使用它的层中的一个。
Axon ORM是不含脂肪的框架的一部分-它具有一个动态映射器。没有代码生成器。没有愚蠢的XML/YAML配置文件。它直接从后端读取数据库模式,所以在大多数CRUD操作中,你甚至不需要扩展基本模型。它适用于所有主要的支持__abc3的数据库引擎:MySQL, SQLite, SQL 服务器/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数据访问层与框架一样轻量级:14 KB (Axon) + 6 KB (SQLdb)。脱脂只有55 KB。
我在PHP库蓬勃发展中找到了ORM相关的类。
尝试ligrelibrary的ORM。
看看http://code.google.com/p/lworm/。它是一个非常简单但功能强大的轻量级PHP ORM系统。如果您愿意,还可以轻松地扩展它。
一个真正好的简单ORM是MyActiveRecord。MyActiveRecord文档。我经常使用它,可以说它非常简单,经过了很好的测试。
看了Syrius ORM。这是一个新的ORM,项目还处于开发阶段,但下个月将发布1.0版本。
PdoMap试试。维基百科称其灵感来自Hibernate。因为我从未使用过Hibernate,所以我无法判断:),但根据我的经验,我想说的是,它是一种好的、快速的ORM,易于实现,学习曲线不像其他ORM那么陡峭。
我们使用的另一个很棒的开源PHP ORM是PHPSmartDb。它是稳定的,使您的代码更加安全和干净。其中的数据库功能是我在PHP 5.3中使用过的最简单的功能。
茶道是一个简单的PHP ORM包,易于使用,并提供视频教程
如果你正在寻找一个实现数据映射器范式的ORM,而不是专门的活动记录,那么我强烈建议你看看GacelaPHP。
Gacela特点:
其他ORM解决方案在开发任何远程复杂的东西时都过于臃肿或具有繁重的限制。Gacela通过实现数据映射器模式来解决活动记录方法的局限性,同时通过使用PDO来进行与数据库和Memcached的所有交互,将膨胀保持在最低限度。
我对Idiorm和巴黎有很好的体验。Idiorm是一个小而简单的ORM库。Paris是在Idiorm上构建的一个同样简单的活动记录实现。它是PHP 5.2+ PDO。如果您想要一些简单的东西,可以直接放到现有的应用程序中,那么它是完美的。
巴西ORM: http://www.hufersil.com.br/lumine。它适用于PHP 5.2+。在我看来,它是葡萄牙人和巴西人的最佳选择,因为它有易于理解的文档和大量的示例可供下载。
你应该看看Idiorm和巴黎。
敏捷开发工具包有自己独特的ORM/ActiveRecord和动态SQL的实现。
作品简介:http://agiletoolkit.org/intro/1
语法(活动记录):
$emp=$this->add('Model_Employee'); $emp['name']='John'; $emp['salary']=500; $emp->save();
语法(动态SQL):
$result = $emp->count()->where('salary','>',400)->getOne();
虽然动态SQL和活动记录/ORM可以直接使用,但敏捷工具包进一步将它们与用户界面和jQuery UI集成在一起。这类似于JSF,但用纯PHP编写。
$this->add('CRUD')->setModel('Employee');
这将显示ajajxified CRUD with for Employee模型。
看看LEAP ORM for Kohana。它适用于一系列数据库,包括DB2, 小雨, 火鸟, MariaDB, SQL Server, MySQL, Oracle, PostgreSQL和SQLite。通过一个简单的自动加载函数,它可以与几乎任何PHP框架一起工作。源代码位于GitHub的https://github.com/spadefoot/kohana-orm-leap。你可以在线结账。
ORM库使用非整数主键和复合键。连接是通过数据库连接池管理的,它与原始SQL查询一起工作。ORM甚至有一个查询构建器,使构建SQL语句超级简单。
MicroMVC有一个13 KB ORM,它只依赖于8 KB 数据库类。它还将所有结果作为ORM对象本身返回,并使用后期静态绑定来避免将有关当前对象的表和元数据的信息嵌入到每个对象中。这导致了最便宜的ORM开销。
它适用于MySQL, PostgreSQL和SQLite。
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"; }
我在miniOrm工作。只是一个迷你ORM,用于使用对象模型&MySQL抽象层尽可能简单。希望它能帮助你:http://jelnivo.fr/miniOrm/