我接手了一个项目。它是一个用PHP和mysql构建多年的应用程序。
它目前有一种很好的文件夹结构,但代码本身写得很差。 几乎每个文件都有php,sql语句和html代码。 有没有使用php echo生成的javascript代码等等。
我想用于进一步开发CakePHP或CodeIgniter,即使这意味着对于新功能,将在旧代码中编写已存在的代码(例如:可能是实用程序函数)。
是否可以将其中一个框架集成到现有应用程序中? 哪个更容易? 你有任何关于如何做的链接吗?
感谢。
答案 0 :(得分:2)
我对CakePHP的经验很少,所以我的答案是关于CodeIgniter。我和CakePHP玩了大约一天,那是差不多两年前的事了。在我看来,与CodeIgniter集成可能更容易,尽管对CakePHP更有经验的人可能会证明我错了。
这是我要采取的方法。我从来没有这样做过,但这似乎是解决问题的合理方法。我想这种方法也适用于CakePHP。
首先,使用最新版本安装新的CodeIgniter。
接下来,创建镜像应用程序当前结构的控制器和操作(控制器方法)。例如,如果您的网页包含网址http://example.com/users/view
,则可以使用Users
方法创建view()
控制器。
接下来,为应用程序的每个当前文件创建视图文件,并通过适当的控制器方法加载它们。这里的目标是使用CodeIgniter的路由系统使应用程序正常工作,尽管此时您将不会使用任何模型,库或帮助程序。
将应用程序放在CodeIgniter之上后,开始重构它以适应MVC模式。从视图文件中提取应用程序逻辑(查询,表单处理等)并将它们放入控制器中。将所有表示逻辑和HTML保留在视图中。
接下来,重构控制器。这是一个棘手的地方,因为控制器代码可以放在模型,库或其他控制器方法中。一个好的起点是将所有查询都放入适当的模型中。比较您的控制器,看看是否有任何代码重复。这是一个好的迹象,你应该从控制器中删除它并将其放在其他地方。不幸的是,我无法告诉你哪里因为它在每种情况下都有所不同。
继续重构您的应用程序,直到您将其置于您满意的可行状态...
希望这会有所帮助。我当然错过了一些关键步骤,例如设置和配置CodeIgniter,但如果你认真对待这一点,我强烈建议你阅读CodeIgniter User Guide以了解它是如何工作的。如果你还没有,你也应该熟悉MVC(模型 - 视图 - 控制器)。
这里没有一个适合所有解决方案,但希望我已经给了你一些想法或者至少是一个跳出来的起点。如果您有任何疑问或有点困惑,请在下方发表评论,我会尽快回复您。
答案 1 :(得分:0)
在我看来,在CodeIgniter(我从未使用过CakePHP)和模型中编写控制器比在复制粘贴时更容易,只需对视图进行一些调整。