提问人:Eli 提问时间:11/1/2008 最后编辑:Chuck BurgessEli 更新时间:1/18/2013 访问量:1694
我应该使用哪个框架来确保更好的长期升级/可维护性,CakePHP 还是 CodeIgniter?
Which framework should I use to ensure better longterm upgrade / maintainability, CakePHP or CodeIgniter?
问:
我正在决定一个框架来尝试PHP的框架。我已将其缩小到CakePHP和CodeIgniter。我有几个问题要问任何使用过或熟悉两者的人:
我喜欢 CakePHP 默认将大部分代码保留在 webroot 之外的事实。特别是因为我最终可能会为多个应用程序使用单个框架安装。我看到 CodeIgniter 也会这样做,但你必须配置它并移动一些东西。这种解决方法是安全可靠的,还是事后才想到的?
哪个(如果不是两者兼而有之)更容易升级和长期维护?随着新版本的框架(以及PHP本身)的出现。我不想发现我的东西要么坏了,要么变得过时了。
编辑:
这是一个非常古老的帖子,但我想我会用我最终做的事情来更新它,那就是使用 Kohana。
答:
不是问题。
CodeIgniter 背后有一个赞助商,所以它绝对是长期选择的。此外,它更快。
这不是问题。该应用程序有几行,说明核心和应用程序代码所在的位置。你只需要改变这些行。
你永远无法预料到这一点。
PHP 的状态在这里是一个通配符。一个应用程序 (CI) 旨在与 PHP4 兼容,另一个应用程序需要 PHP5。如果您需要处理仅支持旧版本 PHP 的 Web 主机的可能性,那么您需要使用 CO。
另一个问题是单元测试。如果你要求你的框架附带测试,那么 CI 不是你要走的路。
就我个人而言,由于企业的支持,我对 CI 感到满意。CI背后的公司正在从他们的努力中赚取真正的利润。虽然 CI 是免费的,但他们的付费产品 (ExpressionEngine) 最终将存在于 CI 上。Zend 框架,甚至 Rails(最初是为 Basecamp 构建的)的诞生也是如此。
我已经在 CakePHP 上部署了多个应用程序,这是一次非常、非常、非常好的体验。无论哪种方式都不会出错,因为两者都是可靠的。
你应该在一周左右的时间里尝试这两个框架,在这两个框架中构建一些琐碎的东西(比如博客或维基),看看你更喜欢使用哪个。任何对你最有意义的东西,都可能通过升级和弃用来维持你最长的时间。
CakePHP现在处于一种不稳定的状态,在推动发布1.2版本(不向后兼容)时仍然会发现错误。如果你现在需要一些坚如磐石的东西,我不建议用它来构建一个关键的应用程序。如果你能等一两个月让事情解决,那么这可能是一个有争议的问题。
要解决您的问题,请执行以下操作:
1) Cake 和 CI 以相同的方式 (iirc) 做。在这方面,它们同样安全、可靠和黑客攻击。
2)一切都变了。如果您需要具体的、永久的稳定性和向后兼容性保证,请推出您自己的框架。它没有那么多,除非你愿意,否则你可以保证什么都不会改变。
对上述评论的细微更正:两者都与 PHP4 兼容,而不仅仅是 CI。此外,我不认为拥有赞助商会使 CI 或多或少地可升级或可维护。金钱根本解决不了这些问题。
我将 CakePHP 用于各种应用程序,到目前为止,我一直对它感到满意。1.2 比 1.1 有了巨大的改进,虽然库源代码可能会从 RC3 更改为 Final,但我认为您编写的任何代码都不会过时。我唯一的小问题是手册没有像它应该的那样全面(在我看来),我最终在 API 中花费了很多。权衡是,我现在非常了解幕后的代码。无论如何,我强烈推荐它。
另一方面,我从来没有玩过 CI,所以我不能推荐 CakePHP 而不是 CI。我会把每个都转一圈,看看哪一个抓住了你。无论您选择哪一种,都要研究它的惯例和功能。当我开始使用 Cake 时,我不知不觉地编写了一堆代码来执行 Cake “自动”做的事情,让我在控制器中设置一个变量。
CodeIgniter 非常灵活,一旦你尝试过它就会看到。因此,您的应用程序如何可维护将落在您的手中。
我还使用相同的安装部署了多个应用程序。我通常为 CMS 项目创建 2 个应用程序(一个用于管理员,一个用于前端)。
从 CodeIgniter 的角度解决你的两个问题(我不使用 Cake):
1) CodeIgniter 默认不会将自己保持在 webroot 之外,但它可以通过一些非常简单的更改来做到这一点。我的 CI 教程系列的第一部分解释了如何执行此操作,并演练了新 CI 实例的设置。完成后,唯一需要在 webroot 中的 CI 部分是一个小的 index.php 引导文件。
2) 我有一个最初在 CI 1.4.x 中开发的应用程序,我已经成功迁移到 1.5.x,然后是 1.6.x。对于每个新版本,CI 开发人员都会提供详细的升级说明,列出需要更换的内容,因此升级相当容易。
吉姆。
评论