【问题标题】:Which framework should I use to ensure better longterm upgrade / maintainability, CakePHP or CodeIgniter?我应该使用哪个框架来确保更好的长期升级/可维护性,CakePHP 还是 CodeIgniter?
【发布时间】:2010-09-20 06:48:46
【问题描述】:

我正在决定一个框架来试用 PHP。我已将范围缩小到 CakePHP 和 CodeIgniter。对于使用过或熟悉两者的任何人,我有几个问题:

  1. 我喜欢 CakePHP 默认将大部分代码保留在 webroot 之外的事实。特别是因为我最终可能会为多个应用程序使用单个框架安装。我看到 CodeIgniter 也会这样做,但是您必须对其进行配置并移动一些东西。这种解决方法是安全可靠的,还是事后才想到的?

  2. 哪个(如果不是两者)更容易升级和长期维护?随着新版本的框架(和 PHP 本身)的出现。我不想发现我的东西坏了,或者过时了。

编辑:

这是一篇很老的帖子,但我想我会用我最终做的事情来更新它,那就是使用 Kohana。

【问题讨论】:

  • #2 != Kohana。众所周知,Kohana 忽略了主要版本的向后兼容性。
  • 两者都很好地列出了升级所需要做的事情。请参阅他们的详细升级指南:CodeIgniterCakePHP,CakePHP 也有一些 tools to help

标签: php codeigniter cakephp maintainability


【解决方案1】:

您应该在一周左右的时间里尝试这两个框架,在这两个框架中构建一些琐碎的东西(例如博客或 wiki),然后看看您更喜欢使用哪个。 对你最有意义的事情可能会通过升级和弃用来维持你最长的时间。

CakePHP 目前处于不稳定状态,在发布 1.2 版(不向后兼容)时仍然会发现错误。如果您现在需要坚如磐石的东西,我不建议使用它来构建关键应用程序。如果您可以等待一两个月才能解决问题,那么这可能是一个有争议的问题。

解决您的疑虑:

1) Cake 和 CI 的做法相同 (iirc)。在这方面,它们同样安全、可靠和骇人听闻。

2) 一切都变了。如果您需要具体的、永久的稳定性和向后兼容性保证,请推出您自己的框架。没什么大不了的,除非您愿意,否则您可以保证不会发生任何变化。

【讨论】:

    【解决方案2】:

    我已经在 CakePHP 上部署了多个应用程序,这是一次非常非常好的体验。无论哪种方式都不会出错,因为两者都是可靠的。

    【讨论】:

      【解决方案3】:
      1. 不是问题。

      2. CodeIgniter 背后有赞助商,因此绝对是长期选择的赞助商。而且速度更快。

      【讨论】:

        【解决方案4】:
        1. 这不是问题。该应用程序有几行说明核心和您的应用程序代码所在的位置。您只需要更改这些行。

        2. 你永远无法预料到这一点。

        PHP 的状态在这里是一个通配符。一个应用程序 (CI) 与 PHP4 兼容,另一个则需要 PHP5。如果您需要处理仅支持旧版本 PHP 的网络主机的可能性,那么您需要使用 CO。

        另一个问题是单元测试。如果您要求您的框架附带测试,那么 CI 不是可行的方法。

        就个人而言,由于公司的支持,我对 CI 感到满意。 CI 背后的公司正在从他们的努力中获得真正的利润。尽管 CI 是免费的,但他们的付费产品(ExpressionEngine)最终将在 CI 上运行。 Zend 框架甚至是 Rails 的诞生(最初是为 Basecamp 构建的)也是如此。

        【讨论】:

          【解决方案5】:

          对上述评论的小修正:两者都与 PHP4 兼容,而不仅仅是 CI。此外,我不认为有赞助商会使 CI 或多或少可升级或可维护。金钱至少不能解决这些问题。

          我将 CakePHP 用于各种应用程序,到目前为止我对它很满意。 1.2 是对 1.1 的巨大改进,虽然库源可能会从 RC3 更改为 Final,但我认为您编写的任何代码都不会过时。我唯一的烦恼是手册没有达到应有的全面性(在我看来),而且我最终还是使用了 API。权衡是我现在非常了解幕后的代码。无论如何,我强烈推荐它。

          另一方面,我从来没有玩过 CI,所以我不推荐 CakePHP over CI。我会每一个都试一试,看看哪个能抓住你。无论您选择哪一个,都要研究它的约定和功能。当我开始使用 Cake 时,我不知不觉地编写了一堆代码,通过让我在控制器中设置一个变量来完成 Cake“自动”做的事情。

          【讨论】:

            【解决方案6】:

            CodeIgniter 非常灵活,一旦您尝试过就会发现。因此,您的应用程序如何可维护将落到您的手中。

            我还使用相同的安装部署了多个应用程序。我通常为 CMS 项目创建 2 个应用程序(一个用于管理,一个用于前端)。

            【讨论】:

              【解决方案7】:

              从 CodeIgniter 的角度解决您的两个问题(我不使用 Cake):

              1) 默认情况下,CodeIgniter 不会将自身保留在 webroot 之外,但它可以通过一些非常简单的更改来做到这一点。 my CI tutorial series 的第一部分解释了如何执行此操作,并介绍了新 CI 实例的设置。完成后,唯一需要在 webroot 中的 CI 部分是一个小的 index.php 引导文件。

              2) 我有一个最初在 CI 1.4.x 中开发的应用程序,并且我已成功迁移到 1.5.x,然后是 1.6.x。对于每个新版本,CI 开发人员都会提供详细的升级说明,列出需要更换的内容,因此升级相当容易。

              吉姆。

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 1970-01-01
                • 2014-07-15
                • 2010-10-12
                • 1970-01-01
                • 2019-06-30
                • 2011-06-13
                • 1970-01-01
                • 1970-01-01
                相关资源
                最近更新 更多