了解一下Doctrine。
Doctrine 1.2 实现了Active Record模式。Doctrine 2+是一个DataMapper ORM。
此外,看看Xyster,它基于Data Mapper模式。
/* 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)。Fat-Free只有55 KB。
$product->load('product_id=123')
的代码时,我总是感到担忧。 - Markus Hedlund$product->load(array('product_id=:id',array(':id'=>123)));
- bcosca我一直在独自开发Pork.dbObject(一个简单的PHP ORM和Active Record实现)。主要原因是我发现大多数ORM都太复杂了。
Pork.dbObject的主要思想是轻量级且易于设置。没有一堆XML文件,只需要在构造函数中调用一个函数来绑定它,并使用addRelation或addCustomRelation定义与另一个dbObject的关系。
看一看这个:Pork.dbObject
尝试使用Doctrine2。它可能是PHP中最强大的ORM工具。我之所以将其与Doctrine 1分开提到,是因为它是完全不同的软件。它已经从零开始重写,仍处于测试阶段,但现在可以使用并进行开发。
它是一个非常复杂的ORM,但设计良好。原始的Doctrine 1魔法非常多已经消失。它提供了完整的解决方案,您可以在Doctrine2上编写自己的ORM或仅使用其层之一。
看看Outlet ORM。它比Propel和Doctrine更简单,类似于Hibernate,只是带有更PHP化的感觉。
ALTER TABLE
调用是昂贵的(并且可能很危险)。 - Nicole