我的团队必须维护一个写得很糟糕的大型php应用程序.它是在一个设计不佳的数据库之上混合使用html,javascript和SQL(例如,它有一个包含几百列的表).代码库的唯一优势是它可以工作.
我们经常修复错误并重写它的一部分.
我想给我们做的重写提供一个结构,所以我想将mvc框架集成到代码库中.你能建议一个好的环境框架吗?
以下是我希望从这样的框架中获得的事项列表:
我赞同 Zend 只是为了列出它如何满足您的特定要求:
- API 必须非常稳定。我们无法在每个版本上重写代码。
如前所述,API 在次要版本之间趋于稳定。包含更改的主要版本应该不难集成。
- 自定义会话管理或至少使用标准 $_SESSION[] (以便能够与旧代码对话)。
Zend_Session正是你想要的。默认会话存储是 $_SESSION,Zend 添加了命名空间概念。您现有的代码应该没问题,任何新代码都可以使用 Zend 对象来确保没有变量名称重叠。
- 自定义身份验证。
Zend_Auth有一些身份验证后端,但它旨在允许您实现自己的身份验证。
- 使用原始 SQL 应该得到很好的支持(数据库很难用对象来表示)。
Zend_DB实现了表网关模式,它允许您通过对象访问数据;但是,您也可以直接使用 SQL 并以数组形式获取结果。
- 它不应该假设我每个控制器都有一个表。
Zend_Controller和 Zend 的 MVC 实现的其余部分不对模型做出任何假设,完全由您决定。我确信有些人不喜欢这一点,但这是 MVC 设计的一个领域,每个项目都有很大差异 - 因此这完全留给开发人员。您可以扩展一些数据库类,或者只使用现有的数据库访问代码。
这是 Zend 框架的选择心态的一个例子。您确实可以单独使用任何库。这应该很适合您的项目。例如,您可以使用Zend_View,而不使用其余的 MVC 类,只是将演示文稿移动到模板中。或者只是使用 Zend_Auth 来替换现有的 Auth 系统。使用 Zend,您可以慢慢地将您的项目一点一点地转变为更加结构化的状态。