鉴于您对 Tom 的回答,我建议您查看 Zend Framework 之类的东西。它的 ORM 具有可以分阶段实施的“接受或离开”架构。
当我来到我现在的雇主那里时,他们有一份几个月前刚刚完成的申请,但已经通过了一两个之前的版本,而当前版本的开发时间比预期的要长六个月。但是,代码库很混乱。例如,数据库访问逻辑和业务逻辑之间没有抽象。而且,他们希望我推动网站向前发展,构建新功能、扩展现有功能并修复代码中的现有错误。更复杂的是,他们没有在数据输入或输出上使用任何形式的卫生设施。
当我开始涉足这个问题时,我意识到我需要一个可以分步实施的抽象问题的解决方案,因为它们显然不会完全重写。我最初的方法是编写一个自定义的 ORM 和 DAL,这将为我完成繁重的工作。它工作得很好,因为它没有侵入现有的代码库,因此它允许我以不显眼的方式将应用程序的整个部分移动到新架构中。
然而,在将我们网站的大部分用户区域移植到这个新结构并在我的自定义框架上构建了一个完整的应用程序(其中还包括一个自定义前端控制器和 mvc 实现)之后,我正在切换到 Zend 框架(这是我的选择,尽管我确信其他一些框架也可以在这种情况下工作)。
在切换到 Zend 框架时,我完全不担心遗留代码库,因为:
- 我可以不显眼地构建新模型和重构旧模型(构建在我的自定义框架上)。
- 我可以重构现有的控制器(例如它们),使其封装在一个行为方式与 Zend 的 MVC 框架一致的类中,这样实际开始使用 Zend 的前端控制器就成了一个小问题。
- 我们的视图已经在 Smarty 中构建,因此我不必担心分离控制器和视图逻辑,但我将能够扩展 Zend 框架,以便我可以在 Smarty 中呈现现有模板,同时在直接 PHP 中构建新模板。
基本上,Zend Framework 有一个接受它或离开的架构,这使得在现有项目中使用它是一种乐趣,因为新代码和重构代码不需要侵入现有代码。