是否有类似于Ruby的DataMapper的PHP ORM?

时间:2009-07-02 02:43:24

标签: php orm datamapper

我主要使用Ruby和Merb中的DataMapper,因此我正在寻找类似于DataMapper的PHP ORM。有什么好的吗?

6 个答案:

答案 0 :(得分:2)

我相信Doctrine以类似的方式实施。

答案 1 :(得分:1)

phpDataMapper项目是专门创建的,就像Ruby的DataMapper一样。如果您对该项目感兴趣,请帮帮我!我正在寻找更多了解Ruby DataMapper的人来帮助他们更快地扩展项目。

GitHub项目页面: https://github.com/vlucas/phpDataMapper/tree

答案 2 :(得分:0)

Propel是php5的ORM,您也可以查看XPDO

答案 3 :(得分:0)

我建议您查看this question以获取建议。

如果您正在寻找一个实现Data Mapper范例而不是Active Record的ORM,那么我强烈建议您查看GacelaPHP

Gacela特点:

  • 数据映射器
  • 外键映射
  • 关联映射
  • 依赖映射
  • 具体表继承
  • 查询对象
  • 元数据映射
  • 懒惰&急切的装载
  • 完全Memcache支持

在开发任何远程复杂的东西时,其他ORM解决方案过于膨胀或存在繁重的限制。 Kacela通过实现数据映射器模式解决了活动记录方法的局限性,同时通过将PDO用于与DB和内存缓存的所有交互来保持膨胀最小化。

答案 4 :(得分:0)

有db.php orm(http://dbphp.net)它会执行您列出的所有内容但不支持memcache,而是使用apc用户缓存功能,并且还可以通过扩展\ db \ cache basic来覆盖缓存引擎类像那样的类(原来这是使用apcu的db.php'长缓存类):

    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来为特定环境开发我的自定义缓存引擎。

答案 5 :(得分:-1)

我之前从未使用过DataMapper,但你可以查看CakePHp框架,它与ROR非常相似。