在spaghetti代码库之上使用什么php框架?

时间:2010-01-26 14:30:25

标签: php frameworks

我的团队必须维护一个写得非常糟糕的大型php应用程序。它是在一个设计不佳的数据库之上混合使用html,javascript和SQL(例如,它有一个包含几百列的表)。代码库的唯一优势是它可以工作。

我们经常修复bug并重写部分内容。

我想给我们重写的结构,所以我想将mvc框架集成到代码库中。你能建议一个好的环境框架吗?

以下列出了我希望从这种框架中获得的东西:

  • API必须非常稳定。我们无法承担在每个版本上重写代码的费用。
  • 自定义会话管理或至少使用标准$ _SESSION [](能够与旧代码交谈)。
  • 自定义身份验证。
  • 应该很好地支持使用原始SQL(数据库很难用对象表示)。
  • 不应该假设每个控制器都有一个表。

2 个答案:

答案 0 :(得分:3)

我建议使用Zend Framework,因为它是一个粘合框架。使用ZF,您不会被迫使用框架期望您使用它的方式。您可以选择所需内容,并使用ZF中的代码逐步替换旧代码。它还支持你提到的所有事情。

此外,我建议运行phpqatools.org中的各种QA工具来支持您进行调试和重构。

框架比较

答案 1 :(得分:2)

我正在回应Zend,列出它如何满足您的特定要求:

  
      
  • API必须非常稳定。我们无法承担在每个版本上重写代码的费用。
  •   

如上所述,API在次要版本之间往往是稳定的。带有变化的主要版本不应该难以整合。

  
      
  • 自定义会话管理或至少使用标准$ _SESSION [](能够与旧代码交谈)。
  •   

Zend_Session完全符合您的要求。默认会话存储是$ _SESSION,Zend添加了名称空间概念。您现有的代码应该没问题,任何新代码都可以使用Zend对象来确保没有变量名称重叠。

  
      
  • 自定义身份验证。
  •   

Zend_Auth有一些身份验证后端,但它旨在让您实现自己的身份验证。

  
      
  • 应该很好地支持使用原始SQL(数据库很难用对象表示)。
  •   

Zend_DB实现了表网关模式,允许您通过对象访问数据;但是,您也可以直接使用SQL并将结果作为数组。

  
      
  • 不应该假设每个控制器都有一个表。
  •   

Zend_Controller和Zend的MVC实现的其余部分没有对模型做出任何假设,完全取决于你。我敢肯定有些人不喜欢这样,但是MVC设计的一个领域在不同项目之间变化很大 - 所以这完全留给了开发人员。您可以扩展一些DB类,或者只使用现有的DB访问代码。

这是Zend Framework挑选心态的一个例子。你真的可以自己使用任何一个库。这应该适合您的项目。例如,您可以使用Zend_View而不使用其余的MVC类来将演示文稿移动到模板中。或者只使用Zend_Auth替换现有的Auth系统。使用Zend,您可以一点一点地将项目慢慢地移动到更结构化的状态。