【发布时间】:2009-07-02 02:43:24
【问题描述】:
我主要使用 Ruby 和 Merb 中的 DataMapper,所以我正在寻找类似于 DataMapper 的 PHP ORM。有什么好的吗?
【问题讨论】:
标签: php orm datamapper
我主要使用 Ruby 和 Merb 中的 DataMapper,所以我正在寻找类似于 DataMapper 的 PHP ORM。有什么好的吗?
【问题讨论】:
标签: php orm datamapper
我相信Doctrine 的实现方式类似。
【讨论】:
phpDataMapper 项目是专门为类似于 Ruby 的 DataMapper 而创建的。如果你对这个项目感兴趣,请帮助我!我正在寻找更多了解 Ruby DataMapper 的人来帮助更快地扩展项目。
GitHub 项目页面: https://github.com/vlucas/phpDataMapper/tree
【讨论】:
Propel 是 php5 的 ORM,你也可以看看XPDO
【讨论】:
我建议您查看this question 以获取建议。
如果您正在寻找实现 Data Mapper 范例而不是专门用于 Active Record 的 ORM,那么我强烈建议您查看 GacelaPHP。
Gacela 特点:
在开发任何远程复杂的东西时,其他 ORM 解决方案过于臃肿或有繁重的限制。 Kacela 通过实施数据映射器模式解决了活动记录方法的局限性,同时通过使用 PDO 与 DB 和 memcache 进行所有交互,将膨胀降至最低。
【讨论】:
有 db.php orm (http://dbphp.net) 它可以执行您列出的所有操作,但不支持 memcache,而是使用 apc 用户缓存功能,并且还可以通过扩展 \db\cache 基本类来覆盖缓存引擎类,例如那(原来这是db.php使用apcu的长缓存类):
class long extends cache
{
function store ($name, $value)
{
if (is_bool($value))
{
\apc_delete ($name);
}
else
{
\apc_store ($name, $value);
}
}
function fetch ($name)
{
return \apc_fetch ($name);
}
function clear ()
{
\apc_clear_cache ('user');
}
}
因此,如果您实现 mymemcache extends \db\cache 之类的类并在之后覆盖这三个方法,您可以像这样将缓存引擎附加到您的 orm:
$database->context->caches[\db\cache::long] = new mymemcache();
一切都会顺利的。
我只是通过像这样扩展 \db\cache 为特定环境开发了我的自定义缓存引擎。
【讨论】:
我以前从未使用过 DataMapper,但您可以查看 Cakephp 框架,它具有与 ROR 非常相似的 ORM。
【讨论】: