将 php 项目移至 codeigniter 或更新现有框架 [关闭]

2024-04-15

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

从那时起,我添加了额外的功能,它开始感觉非常混乱,旧代码和新代码混合在一起,并且没有像样的数据库管理。

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

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

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

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


Short answer: neither.

现在有一个更长的版本..

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

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

你应该做什么而不是..

重构你的代码。

如果您已经在该项目上工作了很长时间,您将从这次经历中学到很多教训。通过改进现有代码库来利用它们。

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

通过这种方式,您将增强您的项目和技能。

P.S
Even if you were starting new project, I would recommend to avoid both frameworks. They both are filled with bad practices and worse code: global state everywhere, procedural programming, misinterpretation of MVC, disregard for OOP principles and laws.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将 php 项目移至 codeigniter 或更新现有框架 [关闭] 的相关文章

  • 压缩 zend Framework 2 的 html 输出

    我目前正在 PHP 5 4 4 上使用 Zend Framework 2 beta 开发个人 web 应用程序以用于自学目的 我想知道是否可以在 html 输出发送到浏览器之前拦截它 以便通过删除所有不必要的空格来缩小它 我怎样才能在ZF2
  • 在会话 cookie 中存储大量数据会产生什么影响?

    谁能解释一下在会话中存储大量数据的缺点或给我指出一些阅读材料 我也很感兴趣在会话中存储数据和从数据文件读取数据之间是否有任何区别 如果您在会话中存储大量数据 则输入 输出性能会下降 因为会有大量读取 写入 默认情况下 PHP 中的会话存储在
  • 在 PHP 中将 CSV 写入不带括号的文件

    是否有本机函数或实体类 库用于将数组写入 CSV 文件中的一行而无需封装 fputcsv将默认为 如果没有为封装参数传入任何内容 谷歌让我失望了 返回一大堆有关的页面的结果 fputcsv PEAR 的库做的事情或多或少与fputcsv 工
  • 具有动态表单名称的 form_widget

    在我的 Twig 模板中 我有一个 FOR 循环 它创建多个表单 如下所示 for thing in things set form id myform thing Id set form name attribute form myfor
  • 使用 php 更改白天和黑夜的背景?

    我正在制作一个 tumblr 页面 我的 html 页面有两种不同的背景 我希望白天背景从早上 7 点到晚上 8 点显示 夜间背景从晚上 8 点到早上 7 点显示 我决定用 php 来做这件事 但对于 php 来说我是个新手 我的朋友给我发
  • 如何从导出的 csv 文件中删除双引号

    我正在使用 Laravel 5 8 并且添加了 Maatwebsite 包 用于从数据库表导出 CSV 文件 这是我导出的类 class ConfirmedExport implements FromCollection WithHeadi
  • php - 我应该加密电子邮件地址吗?

    当用户注册时 我应该将他们的电子邮件按原样存储在数据库中还是对其进行哈希处理 我希望稍后能够解密 那么我应该使用 md5 吗 谢谢你 No md5 is 单向哈希函数 http en wikipedia org wiki Cryptogra
  • php 中的简单授权/登录功能

    我希望第一次实现用户登录到我的网站 我很高兴构建自己的解决方案 或者实现一些开源的东西 但是到目前为止 在我的搜索中没有任何包是明显的选择 同样 我完全意识到 作为一名中级 php 程序员 如果我推出自己的解决方案 并真正敞开大门 我很可能
  • AWS S3 上传的图像已损坏

    我正在 AWS ec2 ubuntu 机器上工作 我的代码在 cakephp 中 当我尝试将任何图像上传到 AWS S3 时 它都会损坏 虽然它在核心 php 代码中运行良好 这是我的控制器代码 if this gt User gt sav
  • PHP 中的 Preg_replace

    我想替换 中包含的字符串中的内容content 它是多行等 preg replace 函数应该删除整个 com 没有垫子 蒙特 尝试这个 result preg replace s replacement content subject
  • PHP - hash_pbkdf2 函数

    我正在尝试使用此 php 函数执行一个函数来哈希密码 http be php net manual en function hash pbkdf2 php http be php net manual en function hash pb
  • 如何编写在正文中包含锚标记的 Zend Framework URL?

    使用 Zend Framework 中设置的标准 MVC 我希望能够显示始终具有锚点的页面 现在我只是在 phtml 文件中添加一个带有 anchor 的无意义参数
  • PHP中如何识别服务器IP地址

    PHP中如何识别服务器IP地址 对于服务器 ip 来说是这样的 SERVER SERVER ADDR 这是港口的 SERVER SERVER PORT
  • 通过JS Laravel访问存储目录

    有没有办法访问storage目录 该目录已经链接到publicJS 中的目录 我正在尝试制作一个上传图片的表单 验证脚本 if request gt hasFile photos marker gt photos request gt ph
  • 将数组拆分为特定数量的块

    我知道array chunk 允许将数组拆分为多个块 但块的数量根据元素的数量而变化 我需要的是始终将数组拆分为特定数量的数组 例如 4 个数组 以下代码将数组分为 3 个块 两个块各有 2 个元素 1 个块有 1 个元素 我想要的是将数组
  • 如何在php中使用preg添加html属性

    我正在寻找在 php 中编写一个脚本来扫描 html 文档并根据它找到的内容向元素添加新标记 更具体地说 我是扫描文档并为每个元素搜索CSS标记 float right left 如果找到它 它会添加align right left 基于它
  • PHP文件上传

    如果我想在文件名转到服务器的永久位置 而不是临时位置 之前更改文件名 我该如何执行此操作 代码如下
  • Zend Framework Zend_Form 装饰器: 位于按钮元素内部?

    我有一个像这样创建的按钮元素 submit new Zend Form Element Button submit submit gt setLabel My Button submit gt setDecorators array Vie
  • 上游太大 - nginx + codeigniter

    我从 Nginx 收到此错误 但似乎无法弄清楚 我正在使用 codeigniter 并使用数据库进行会话 所以我想知道标题怎么会太大 有没有办法检查标题是什么 或者看看我能做些什么来修复这个错误 如果您需要我提供任何conf文件或其他文件
  • 在 PHP 中模拟 jQuery.ajax 请求

    我必须在 PHP 中模拟 AJAX 请求 就像在 jQuery 中一样 我当前的代码在这里 原始 AJAX 调用 不得修改 ajax type POST url someFile php data data success function

随机推荐

  • 为什么 LightGBM 中的 R2 分数为零?

    import numpy as np import pandas as pd import lightgbm from sklearn metrics import r2 score mean squared error as MSE da
  • Azure DevOps 为拉取请求生成工件 ID

    Azure DevOps API 文章评价 列表 https learn microsoft com en us rest api azure devops policy evaluations list view azure devops
  • 服务定位协议的客户端实现示例? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 有谁知道可以在 Windows 盒子上构建 运行的服务定位协议的一个很好的示例实现吗 OpenSLP h
  • SQL Server 2005 中的波斯语数字

    我正在尝试将一些波斯语文本添加到我的 SQL Server 2005 数据库中 字母没问题 但是波斯数字 转换为 例如 如果我添加此文本 到数据库 将会有 在数据库 我应该怎么办 例如 我应该使用哪种排序规则 我在用着Arabic CI A
  • 将列表从文本文件加载到 Bash 脚本

    I ve a txt文件包含 abc com google com yahoo com 我有兴趣将其作为列表加载到 bash 脚本中 即Domain List abc com google com yahoo com 可以做吗 附加信息 一
  • 没有为 Eclipse 插件项目找到/生成 Plugin.xml 文件

    我正在开发一个 Maven 插件 它将用于覆盖默认的 Maven 生命周期 为了解决依赖关系 Eclipse 和其他 我想使用 tycho 所以我配置了maven项目将其转换为eclipse plugin project 这是我的 POM
  • 如何设置 NSPredicate 来查找具有 nil 属性的对象

    我有一个ManagedObject class 班级成员之一是NSDate 我想显示未设置日期的类的所有对象 我尝试使用这样的谓词 NSPredicate predicate NSPredicate predicateWithFormat
  • 了解 HTML Retina Canvas 支持

    最近我迷上了 HTMLcanvas绘图及其视网膜支持 无需进一步绘制配置线canvas 元素在视网膜显示屏上看起来有点模糊 我确实知道视网膜显示屏的像素是其四倍 因此默认情况下必须填充一些设备像素 否则图片将只有预期大小的一半 Exampl
  • 提高大型 EF 多级包含的性能

    我是一名 EF 菜鸟 就像我今天刚开始 我只使用过其他 ORM 我正在经历一场烈火的洗礼 我被要求提高另一个开发人员创建的查询的性能 var questionnaires await myContext Questionnaires Inc
  • “与所有者的长时间监视器争用”警告

    我明白了警告信息自从我看到这条消息后 我也开始看到Google Play 服务没有响应弹出窗口和它关闭我的申请一段时间后 我查看过类似的问题 但找不到原因 以下是我的处理程序线程使用示例 我不知道该怎么做才能避免这个问题 Override
  • 对于 Javascript,是什么阻止现代实现不将参数视为真正的数组?

    我认为这是一个旧的 Javascript 行为 Crockford 说这是一个设计错误 在函数内部 arguments就像一个数组 只不过它不是一个真正的数组 因此不能对其调用数组方法 function foo console log ar
  • 如何在 sbt 中检测 JavaFX 运行时 jar

    我想做的是定义javaHome一开始 要么来自环境变量 要么来自默认的固定字符串 然后 稍后 我会使用该字符串 这是我尝试过的 javaHome Some file Library Java JavaVirtualMachines jdk1
  • 在 Jenkins 上使用 PyLint 以及警告插件和管道

    我想用PyLint https www pylint org詹金斯与警告插件 https plugins jenkins io warnings ng and Pipeline https jenkins io doc book pipel
  • 如何使用 T-SQL“挑选”随机记录

    这是一个简单的问题 其实很难回答 因为 挑 有特殊的含义 我需要为每个人随机选择三个 并给出选择 行号 1 2 和 3 困难之处在于人员和选择来自不同的表 并且人员和选择之间没有逻辑连接 The 我能得到的最近的 https stackov
  • C# toUpper 用于不带大写的语言

    使用时String toUpper https msdn microsoft com en us library system string toupper v vs 110 aspx在尝试 格式化 不包含大写字符 例如阿拉伯语 的语言时
  • 如何检查 svg 路径是否具有与数组中的值匹配的类,如果是,则添加一个新类

    我有一个数组和一些svg path元素 我正在使用传单地图 https leafletjs com 我需要检查路径的类是否与数组中的值之一匹配 如果是则添加一个类fadeIn to it var foundNations usa Franc
  • Ruby on Rails 4 - 使用什么身份验证 gem? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 所以过去我们有acts as authenticated restful authentication 等 但现在有多种选择以及Rails
  • 什么是 GitLab 实例 URL,如何获取它?

    我尝试到处寻找它 但什么也没找到 如果有人可以直接开箱即用地定义它 那就太棒了 我不知道 GitLab URL 的实例是什么 我问是否有人可以澄清它是什么 以及我在哪里可以得到它 我目前正在尝试将其添加到视觉工作室代码 https en w
  • 以编程方式检查 Android OTA 系统更新

    如果您转到 设置 gt 关于手机 gt 检查更新 则会启动检查以查看是否有适用于您手机的系统更新 我如何以编程方式执行此操作 此外 我试图在 Android 源代码中找到发生这种情况的位置 以便我可以完整地看到它并更好地理解它 有没有人有什
  • 将 php 项目移至 codeigniter 或更新现有框架 [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi