在意大利面条代码库之上使用什么php框架?

在意大利面条代码库之上使用什么php框架?,php,frameworks,Php,Frameworks,我的团队必须维护一个编写得非常糟糕的大型php应用程序。它是html、javascript和SQL的混合体,位于一个设计拙劣的大型数据库之上(例如,它有一个包含数百列的表)。代码库的唯一优点是它可以工作 我们一直在修复和重写部分错误 我想为我们所做的重写提供一个结构,因此我考虑了如何将mvc框架集成到代码库中。你能推荐一个好的环境框架吗 以下是我希望从该框架中得到的东西的列表: API必须非常稳定。我们无法在每个版本上重写代码 自定义会话管理或至少处理标准的$u会话[](以便能够使用旧代码)

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

我们一直在修复和重写部分错误

我想为我们所做的重写提供一个结构,因此我考虑了如何将mvc框架集成到代码库中。你能推荐一个好的环境框架吗

以下是我希望从该框架中得到的东西的列表:

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

我建议Zend框架用于此目的,因为它是一个粘合框架。使用ZF,您不会被迫了解框架希望您如何使用它。您可以选择您想要的,并逐渐用ZF的代码替换您的遗留代码。它还支持您提到的所有内容

此外,我建议运行在上找到的各种QA工具,以支持您进行调试和重构

框架比较


我回覆Zend只是想列出它如何满足您的特定需求:

  • API必须非常稳定。我们无法在每个版本上重写代码
如前所述,API在小版本之间趋于稳定。具有更改的主要版本应该不难集成

  • 自定义会话管理或至少处理标准的$u会话[](以便能够使用旧代码)
这正是你想要的。默认会话存储是$\u会话,Zend在其中添加了名称空间概念。您现有的代码应该很好,任何新代码都可以使用Zend对象来确保没有变量名重叠

  • 自定义身份验证
有一些身份验证后端,但它的设计允许您实现自己的身份验证

  • 应该很好地支持使用原始SQL(数据库很难用对象表示)
实现表网关模式,允许您通过对象访问数据;但是,您也可以直接使用SQL并以数组的形式获取结果

  • 它不应该假设每个控制器都有一个表
Zend的MVC实现的其余部分对模型没有任何假设,这完全取决于您。我肯定有些人不喜欢这样,但这是MVC设计的一个领域,不同的项目有很大的不同,所以这完全由开发人员决定。您可以扩展一些DB类,或者只使用现有的DB访问代码


这是Zend框架的选择心态的一个例子。你真的可以单独使用任何一个库。这应该与您的项目配合得很好。例如,您可以在不使用其他MVC类的情况下,仅将演示文稿移动到模板中。或者使用Zend_Auth替换现有的Auth系统。有了Zend,您可以慢慢地将项目移动到一个更结构化的状态,一点一点。

这不是一个正确的答案,但我的依赖性规则是要么扮演我自己的角色,要么选择最依赖的依赖性。我总是问自己:“如果库/框架/任何X突然消失,世界会结束吗?”?我更喜欢依赖那些最接近“是”的方面。@Doug代码库唯一的依赖是html、js和php。api稳定性如何?我听说在1.0和1.71.0之间发生了重大变化,1.0不再适用。当前版本为1.9,1.10目前正在测试中。API是稳定的。当2.0出现时,将会有一些重大的变化,但恐怕还没有ETA。Zend可能是你最好的选择,因为(据我所知,我现在正在比较框架),它不需要你立即重写所有的意大利面以符合其架构。在所有的框架中,Zend可能是允许缓慢过渡的最佳候选者。@Pekka这正是我对你的意思,你没有被强迫使用:)可能不太清楚。谢谢你重新措辞。