Php ORM对我们的需求来说是不是太过分了?如果没有,哪一个?

Php ORM对我们的需求来说是不是太过分了?如果没有,哪一个?,php,orm,doctrine,propel,Php,Orm,Doctrine,Propel,我为一个网站工作,该网站有一个大型的遗留代码库,使用原始的PHP mysql API有数百个自定义mysql查询。出于安全原因,我们希望重写模型以删除直接编写的查询 我们最初的计划是简单地重写查询,使用PDO PHP扩展访问数据库。然而,我们随后开始研究类似于推进和条令的ORM,实际上已经决定尝试使用推进 然而,我开始怀疑这对我们来说是不是太过分了——重写我们的模型本身就是一项艰巨的工作。为了实现这一点,我们将尝试复制模型的现有功能——这意味着返回关联数组中的所有数据。但是,如果我们这样做,我们

我为一个网站工作,该网站有一个大型的遗留代码库,使用原始的PHP mysql API有数百个自定义mysql查询。出于安全原因,我们希望重写模型以删除直接编写的查询

我们最初的计划是简单地重写查询,使用PDO PHP扩展访问数据库。然而,我们随后开始研究类似于推进和条令的ORM,实际上已经决定尝试使用推进

然而,我开始怀疑这对我们来说是不是太过分了——重写我们的模型本身就是一项艰巨的工作。为了实现这一点,我们将尝试复制模型的现有功能——这意味着返回关联数组中的所有数据。但是,如果我们这样做,我们基本上会失去使用ORM系统的大部分好处吗

另一个问题是,我们的系统严重依赖于缓存查询结果,并使用名称空间系统使结果无效。起初,我们认为扩展Propel来处理结果缓存可能不太难,但互联网搜索表明,人们通常不会使用Propel来处理结果缓存;此外,该理论似乎有内置的结果缓存

如果我们将查询结果作为关联数组返回,而没有充分利用数据对象,那么我们是否可以从使用条令或推进中获得其他好处,从而值得使用ORM的开销?我能想到的最好的论据是,在我们完成了模型的大修之后,我们至少可以开始尝试在新系统中充分利用ORM,并且可能在将来开始大修旧系统以利用它

所以问题是:如果我们不打算用ORM返回对象,我们最好直接使用PDO吗?或者,如果使用ORM还有其他优势,那么内置的缓存是一个杀手级功能(如果我们需要缓存),还是可以添加到推进中

若我们不打算用ORM返回对象,那个么直接使用PDO是最好的选择吗

在某个时刻,每个人都放弃ORM,只依赖PDO。那是因为水合作用很昂贵

或者,如果使用ORM还有其他优势,那么内置的缓存是一个杀手级功能(如果我们需要缓存),还是可以添加到推进中

您可以使用推进或条令,决定返回对象,而不是数组。您还可以在其中一个orm上使用缓存层。条令在他们的“commons”包中提供了一个缓存层(我说的是条令2,条令1无论如何都不受支持)。spreep没有提供缓存层,因为有很多现有的库可以提供缓存层

使用带推进的缓存层是可行的,只要选择一个缓存库,您就可以准备好了。顺便说一句,如果您想缓存生成的SQL查询,那么spreep提供了一个


总之,使用缓存层与ORM无关,而是与您的应用程序有关。

这个问题不适合StackOverflow。它征求意见和讨论,两者都不适合SO的问答形式。政府对此解释得相当清楚。我们也是,所以关于“哪一个”的部分也不合适。坚持主题和网站设计是保持如此巨大资源的原因。:-)肯是对的;-)但是,FWIW,我相信一个强大的DAL和一个简单的方法来维护它。这并不一定意味着ORM(但它可以!)。一致性、可维护性和可重复性是关键。就个人而言,我会避免ORM。它效率低下,不可扩展,抽象迟早会崩溃。编写自己的查询并保持对数据库交互的完全控制要好得多。为“不合身”感到抱歉,并感谢您的回答,尽管不合身!如果我们决定继续尝试使用ORM,我可能会重写这个问题,只包括添加缓存以推进的部分。