好的PHP ORM库?
是否有一个好的PHP对象关系映射库 我知道/ADO,但它们似乎只提供数据库供应商之间差异的抽象,而不是域模型和关系模型之间的实际映射。我正在寻找一个PHP库,它的功能类似于Java和NHibernate对.NET的功能 实现活动记录。是一个数据映射程序ORM 还有,看看。它基于数据映射器模式好的PHP ORM库?,php,database,orm,Php,Database,Orm,是否有一个好的PHP对象关系映射库 我知道/ADO,但它们似乎只提供数据库供应商之间差异的抽象,而不是域模型和关系模型之间的实际映射。我正在寻找一个PHP库,它的功能类似于Java和NHibernate对.NET的功能 实现活动记录。是一个数据映射程序ORM 还有,看看。它基于数据映射器模式 另外,看看。只有两个好的:和。我们倾向于信条,而且它与我们的关系很好。但是,如果您正在寻找除主要支持之外的数据库支持,则必须编写自己的代码。原则可能是您最好的选择。在Doctrine之前,它本质上是唯一一个
另外,看看。只有两个好的:和。我们倾向于信条,而且它与我们的关系很好。但是,如果您正在寻找除主要支持之外的数据库支持,则必须编写自己的代码。原则可能是您最好的选择。在Doctrine之前,它本质上是唯一一个开源的实用程序。我真的很喜欢,你可以得到一个概述,它非常好,你可以通过PEAR或SVN获得它
您只需要安装一个正常工作的PHP5,就可以开始生成类。我一直在自己开发Pork.dbObject。(一个简单的PHP ORM和活动记录实现) 主要原因是我发现大多数的字体都太重了 Pork.dbObejct的主要思想是重量轻、设置简单。没有一堆XML文件,只需在构造函数中调用一个函数来绑定它,以及一个addRelation或addCustomRelation来定义与另一个dbObject的关系 看一看:退房。它比Propel和Doctrine更简单,其工作原理与Hibernate类似,只是更像是一种PHP风格。我刚开始使用它,它似乎最接近Ruby on Rails,而不需要调用多个配置文件的复杂性,比如。就像,它是模仿的
它的开发还很早,但到目前为止,域模型的唯一限制是类没有标记为final,属性没有标记为private。一旦我进入PHP>=5.3的领域,我也会尝试实现对私有属性的支持。我目前正在研究的是一种ORM,它设计的语法非常简单,就像Ruby的Datamapper项目一样。它还处于早期开发阶段,但它工作得很好。在PHP5.3发布之前,不要指望有一个好的ORM。这是PHP的OO限制。试一试。它支持各种关系(1对1)、(1对多)、(多对多)和数据类型。它完全不引人注目:不需要代码生成或类扩展。在我看来,它优于任何ORM,包括条令和推进。然而,它仍处于测试阶段,可能在未来几个月内发生重大变化 它也有一个非常小的学习曲线。您将使用的三种主要方法是:
<?php
$object = $dorm->getClassName('id_here');
$dorm->save($object);
$dorm->delete($object);
如果您正在寻找一个ORM,比如,您应该看看
它可以很容易地集成到一个体系结构中(只需要开发一个Web服务类)。试试看,它需要:
- 无配置
- 没有数据库(它可以动态创建所有内容)
- 没有模型
- 等等
它甚至为您执行所有锁定和事务,并在后台监控性能。(见鬼!它甚至还做垃圾收集……)最棒的是。。。你不必写一个。。。代码行。。。耶稣救了我一命 我和我的朋友Kien改进了他在PHP5.3之前编写的ORM的早期版本。我们基本上已经将RubyonRails移植到PHP。它仍然缺少一些我们想要的关键特性,比如事务、复合主键支持、更多的适配器(现在只有MySQL和SQLite 3可以工作)。但是,我们很快就要完成这件事了。您可以看看。试试PHP ADOdb
我不能说这是最好的,因为我没有用过其他的。但是它很快,它支持缓存
而且它比DB/Select快。用于PDO扩展的PHP ORM Faces。看
试试看。它可能是PHP最强大的ORM工具。我把它和第一条原则分开提,因为它是一个完全不同的软件。它已经从零开始重写,仍处于测试阶段,但现在可以使用并得到开发
这是一个非常复杂的ORM,但设计得很好。原教条1中的许多魔法消失了。它提供了一个完整的解决方案,您可以或只使用其中一个。Axon ORM是的一部分-它具有一个动态映射器。没有代码生成器。没有愚蠢的XML/配置文件。它直接从后端读取数据库模式,因此在大多数操作中,您甚至不必扩展基本模型。它适用于所有主要受支持的数据库引擎:、/Sybase、Oracle等
最重要的是,插件和附带的SQL数据访问层与框架一样轻量级:14KB(Axon)+6KB(SQLdb)。无脂肪只有55KB。我在PHP库中找到了与ORM相关的类。尝试了。查看。这是一个非常简单、功能强大、轻量级的PHP ORM系统。如果需要,您还可以轻松地扩展它 我们使用的另一个伟大的开源PHP ORM是。它是稳定的,使您的代码更加安全和干净。其中的数据库功能是我在PHP5.3中使用过的最简单的功能。如果您正在寻找一种实现数据映射器范例而不是特定于Active Record的ORM,那么我强烈建议您看看
Gacela功能:
- 数据映射器
- 外键映射
- 关联映射
- 相依映射
- 具体表继承
- 查询对象
- 元数据映射
- 懒惰和渴望加载
- 全力支持
当开发任何远程复杂的东西时,其他ORM解决方案过于臃肿或有着繁重的限制。Gacela解决了
$urun = new Product();
$urun->name='CPU'
$urun->prince='124';
$urun->save();
/* 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();
$emp=$this->add('Model_Employee');
$emp['name']='John';
$emp['salary']=500;
$emp->save();
$result = $emp->count()->where('salary','>',400)->getOne();
$this->add('CRUD')->setModel('Employee');
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";
}