【问题标题】:Moving a php project to codeigniter or updating the existing framework [closed]将 php 项目移动到 codeigniter 或更新现有框架 [关闭]
【发布时间】:2012-10-21 11:43:30
【问题描述】:

我正在尝试找出处理 php 项目的最佳方式。它是几年前在一个自定义框架上构建的——该框架不是严格的 MVC……它只是有控制器、视图和库。

从那以后,我添加了额外的功能,感觉就像一团糟,旧代码和新代码混在一起,没有像样的数据库管理。

我正在努力决定我的最佳选择是什么。一方面,我可以继续修补现有的代码库,希望我可以使它更有用和面向未来,或者转向 codeigniter(注意:我说 codeigniter,因为我有相当多的经验)。

Codeigniter 选项显然意味着我必须经历所有事情,并且毫无疑问会进行大量的重新编码,但从长远来看,这可能是值得的。

我正在考虑另一种选择,那就是 Laravel 框架。我没有直接的经验,但是我听说 Laravel 4(尚未发布)应该很棒。

那么,把这三个选项放在桌面上,你会选择哪个,为什么?我正在寻找一个令人信服的理由来选择一个而不是另一个,坦率地说,我不知道我目前最好走哪条路线!

【问题讨论】:

  • 完全取决于你的烂摊子应该怎么做以及如何改变?它是否直接赚钱,例如商店或其他付费服务?它是否支持赚钱,例如网站解释的东西?它是无偿存在的吗?谁会为更改为您选择的解决方案买单?如果没有其他问题,请选择 Codeigniter 解决方案,因为您最了解这一点 - 可能是完成工作所需的最少努力。
  • 这是一个基于网络的会员系统,我们向客户授权。然后他们将其用于他们的成员。成本方面,这将是我们自掏腰包,但如果这意味着未来的发展将更快、更高效,我认为这是一项值得的投资。我可能是错的,但这对我来说似乎是合乎逻辑的。

标签: php codeigniter laravel framework-migration


【解决方案1】:

简短回答:两者都没有

现在是更长的版本..

我的印象是,您对框架旨在解决哪些问题感到困惑。当您使用框架时,您获得的是更短的简单应用程序开发。你总是失去的是性能,通常是可维护性。

框架旨在为您提供解决简单问题的工具。这意味着有很多东西是你不需要的。还有一些问题,即框架无法解决甚至积极阻碍您制定解决方案的努力。

你应该怎么做..

重构你的代码。

如果您长期从事该项目,您将从这次经历中学到很多教训。通过改进现有代码库来利用它们。

  • 如果您的架构存在缺陷:重组损坏的部分
  • 如果您不确定某些方法是否有效:添加单元测试
  • 如果某些事情看起来很慢:分析您的编码和优化
  • 如果您不知道某事的作用:找出并添加 cmets

这样您将提高您的项目和技能。

附言
即使您正在开始新项目,我也建议您避免使用这两种框架。它们都充满了糟糕的做法和更糟糕的代码:无处不在的全局状态、程序化编程、对 MVC 的误解、无视 OOP 原则和法律。

【讨论】:

  • 通常礼貌地解释您为什么拒绝回答。
  • 不确定谁在投票 - 但不是我(操作员)。感谢您的详细帖子:)
  • PS+1,应该让更多人意识到这一点
  • 虽然我同意 P.S 的评论,但这肯定意味着长期的痛苦。我看到的唯一明显的收获(如果我错了,请纠正我)是你对编码实践有了更好的尊重。虽然我一直致力于提高我对原则的理解,但将开发时间加倍肯定不是最好的方法吗?
  • 但是你说你已经完成了一个项目。在现有代码库上使用框架不会产生任何好处。它不会神奇地使代码变得更好或更快。
【解决方案2】:

没有明确的正确或答案 - 必须在现在或将来及时进行投资。

就个人而言,我会硬着头皮迁移到 CI。如果您与代码作斗争而不是修复它,那么从长远来看,您在短期内付出的努力将是值得的。

大多数时候,将现有的 PHP 应用程序导入 CodeIgniter 并不需要太多时间——之后您只需要花更多时间重新组织代码即可。

【讨论】:

    【解决方案3】:

    切换到 Laravel,它已经与 php v5.3+ 兼容,拥有一个很棒的社区。我确实在许多项目中使用了 CI,但与 Laravel 相处是我最好的决定之一。 L3 是稳定的并且做得非常好,L4 将重新定义 php 的使用最大化效率。

    如果您的旧系统以 OOP 标准的形式结构良好,那么您可以花一点时间将可用的药水迁移到 Laravel,并结合 Laravel 的超级功能来节省大量时间。例如,Laravel 使用称为 Eloquent 的结构良好的 ORM,并且可以在几分钟内捕捉到所有数据模型。如果你也看看活跃的社区,你会很高兴获得快速支持。

    【讨论】:

    • ORM 实例是不是模型。模型是 MVC 中的一个层。你所谓的“结构良好”是一个全静态的活动记录实现。
    • 因为在模型层我们可以有数据模型来与控制器和视图交互。我相信你会知道做一个好的基于 TDD 的开发,让工厂和 IoC 一起工作,以及使用其他模式(如 Facade 等)是什么感觉。当我们谈论 Laravel 时,这是一种混合设计结构。这完全取决于开发人员使用最佳实践进行锻炼,而 Laravel 适合其中任何一种。 L4 肯定也会得到更多改进。
    • 嗨 Raf - 很高兴有人在这里有 Laravel 经验。 L4 准备好使用了吗?我唯一担心的是,我会在 L3 中编写所有代码,并且在迁移到 L4 时会有一段地狱般的时光。
    • @RickM 我正在​​使用 L3,并且不用担心在 L4 发布时迁移到它。 L4 主要将充满 Composer 包装,因此如果您遵循标准,您将不会遇到困难,即使您遇到问题,我相信 Laravel 的活跃社区会为您提供帮助。
    【解决方案4】:

    我实际上已经有了这方面的经验,因为我最近将一个较旧的站点从本质上是模块化的模型视图设置转移到了 CodeIgniter(带有 MX 模块化扩展)。它并没有花太多时间,而且很容易将模型转换为 CodeIgniter 的 ActiveRecord 范式。

    听起来您甚至不需要进行任何模型转换,所以我认为转换到 CodeIgniter 应该不是太大的挑战,尤其是考虑到您的经验。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-10-16
      • 1970-01-01
      • 1970-01-01
      • 2019-05-24
      • 2018-05-23
      • 1970-01-01
      • 2014-06-21
      • 2015-07-20
      相关资源
      最近更新 更多