CodeIgniter 与 Laravel:详细的并排比较

已发表: 2023-01-31

PHP 在网络上的宝座没有竞争。 它在某种程度上为 79% 的网站提供支持。 开发人员将一些常用的 PHP 函数进行了整理和打包,以捆绑的形式称为 PHP 框架,使 PHP 更加灵活。

CodeIgniter 和 Laravel 是当今最具影响力的两个 PHP 框架。 他们出色的产品极大地造福了当今的互联网格局。

如果您正在寻找 Web 开发技术来构建您的 Web 应用程序,或者想从事 Web 开发工作,那么其中之一就是您的最佳选择。 不过,这引出了一个问题:哪个?

本文将尝试通过检查每个框架的体系结构、主要特性、主要区别和用户来回答这个问题。

那么,CodeIgniter vs Laravel? 让我们深入探讨吧!

什么是 CodeIgniter?

CodeIgniter 的官方标志,红色的字样和标志。
代码点火器标志。 (图片来源:Nabtron)

CodeIgniter 是一个 PHP 框架,与其他 PHP 框架一样,它可以防止您重复编写相同的 PHP 代码。 然而,尽管它是一个 PHP 框架,但它提供了非常小的占用空间和改进的性能。

2006 年 2 月 28 日,EllisLab 推出了 CodeIgniter 网络框架。 然而,在 2014 年,他们将 CodeIgniter 权限转移给了不列颠哥伦比亚理工学院(BCIT)。 迄今为止,BCIT 一直负责 CodeIgniter 的所有版本发布和维护。

如果您想要一个简单但吸引人的 PHP 工具包来创建功能齐全的 Web 应用程序,那么 CodeIgniter 是最佳选择。 尽管其他几个 PHP Web 框架很相似,但 CodeIgniter 具有许多优势,使其成为市场领导者之一。

与许多其他 PHP 框架一样,CodeIgniter 基于模型-视图-控制器 (MVC) 架构。 因此,当用户请求资源时,控制器是第一个做出反应的。 然后,控制器在请求必要的数据之前评估用户的请求。

CodeIgniter 从索引到应用程序控制器的工作流程图
CodeIgniter 工作流程图表。 (图片来源:CodeIgniter)

CodeIgniter 为库提供了一个简单的用户界面和一个逻辑结构来访问这些库,以及插件、帮助程序和其他资源。 它简化了 PHP 复杂功能的使用,同时保持了高性能。

CodeIgniter 主要特点

CodeIgniter 的主要功能是围绕圆圈中心的 CodeIgniter 徽标编写的。
CodeIgniter 的主要特性。 (图片来源:Chapter247)

让我们来看看 CodeIgniter 的主要特性:

  • 遵循 MVC: CodeIgniter MVC 框架通过分离逻辑和表示模块来加速您的网站开发并增强性能。 控制器处理请求,数据库执行模型的动作,视图显示输出。
  • 轻量级: CodeIgniter 的核心系统使用了几个小库,并按需加载额外的库,精简且快速。 因此,CodeIgniter 创建了快速的 Web 应用程序以及最小可行产品 (MVP) 和原型。
  • 内置安全性: CodeIgniter 因其加密和解密功能而值得信赖。 它具有 XSS 过滤、CSRF 保护、密码处理和输入数据验证来保护您的 Web 应用程序。 SQL 注入、跨站点脚本攻击和远程代码执行等威胁都无法与之匹敌。
  • 库和助手:CodeIgniter 使用表单、数组、文件处理、cookie、字符串和目录等内置函数简化编码。 它具有构建和修改库和助手所需的所有工具,您可以在未来使用开源内容管理系统 (CMS) ExpressionEngine 使用它们。
  • 轻松迁移:使用 CodeIgniter 可以轻而易举地从一台服务器迁移到另一台服务器。 公司仅依赖 CodeIgniter,因为它提供无缝的迁移帮助。 您可以毫不费力地将旧数据移动到此框架。 此外,如果您在迁移时遇到问题,您可以依赖其庞大而有用的社区。
  • 测试驱动开发: CodeIgniter 允许测试驱动开发,指的是逐步测试系统。 它使您能够在开发阶段使用循序渐进的过程和广泛的测试来评估网站的性能。
  • 数据库抽象层: CodeIgniter 包含一个数据库抽象层,允许您在不编写 SQL 代码的情况下创建、插入、更新和删除数据。 在同一个应用程序中链接不同的数据库变得更加容易,包括 MySQL、MSSQL、Oracle、MySQLi、PostgreSQL 和 SQLite。
  • 快速学习:您可以在很短的时间内学习 CodeIgniter 并开始使用它开发专业应用程序。 如果您有任何 PHP 经验,那么这对您来说应该是轻而易举的事。
  • 详细的文档: CodeIgniter 全面而完美的文档流程将帮助您快速设置和进入框架。
  • 社区支持: CodeIgniter 拥有丰富的社区支持。 如果您在此框架中遇到高级开发问题,有很多熟练的专业人员可以帮助您。

谁使用 CodeIgniter?

自 2006 年成立以来,CodeIgniter 一直为从新开发人员到知名行业名称的所有人提供服务。 许多企业现在都依赖 CodeIgniter。

让我们来看看一些重要的 CodeIgniter 用户:

  • 搜索引擎优化公司
  • 加州州立大学
  • NetSuite公司
  • 卡西欧电脑
  • 邮卫报
  • 日产
  • NetSuite公司
  • 自由营
  • 麦克拉奇
  • 缓冲

什么是 Laravel?

Laravel 的官方 logo 有这个词
Laravel 的官方标志。 (图片来源:GitHub)

Laravel 是一个 PHP 框架,它简化了 PHP 并使开发人员的开发过程更加容易。 它提供了不同的组件和模板,以节省您在使用 PHP 开发应用程序时从头开始的麻烦。

由于 Laravel 丰富的生态系统和众多的兼容包和扩展,许多开发人员更喜欢它来加速他们的开发过程。 Laravel 使 PHP 更快,并帮助开发人员将其提升到一个新的水平。 事实上,Laravel 帮助防止了 PHP 的消亡。

Laravel Eloquent ORM 互连 Laravel 组件的图表。
Laravel 雄辩的 ORM。 (图片来源:TheCodework)

与 CodeIgniter 一样,Laravel 开发使用 MVC 架构来简化开发过程。 它使表示层和业务逻辑分离。

Laravel MVC 架构被画成三个圆圈,每个圆圈依次有 Model、Controller 和 View。
Laravel MVC 架构。 (图片来源:Net Solutions)

从头开始使用 PHP 创建网站时,您可能已经注意到 UI 和数据库查询都包含在一个文件中。 使用 MVC 模式,您可以将它们分成三个组件,使应用程序开发更容易、更有条理。

此外,与其他现代 Web 开发框架不同,Laravel 允许您将原始 SQL、流畅的查询构建器和 Eloquent ORM 与任何支持的数据库(如 MariaDB 或 MySQL)一起使用。

Laravel 的主要特点

图片左侧为 Laravel logo,右侧为 Laravel 主要功能一一竖写
Laravel 框架特性。 (图片来源:MavenCluster)

Laravel 包含几个功能来提供美丽而强大的网络体验。 让我们来看看 Laravel 框架的一些最重要的方面:

  • 模板引擎: Laravel 的轻量级模板引擎 Blade,比其他引擎更具吸引力。 您可以使用它创建令人惊叹的布局、集成的 CSS 和强大的 JavaScript 结构。 此外,您无需使用动态模板引擎编写脚本即可更改、调整和清理布局。
  • Eloquent 对象关系映射 (ORM): Laravel 的对象关系映射 (ORM) 框架具有用于数据库交互的非常简单的 ActiveRecord 实现。 您可以用 PHP 编写数据库查询,而不是 SQL。 它还通过分配匹配模型来组合程序和数据库表,使其比以前的 PHP 框架更快。
  • MVC 架构: Laravel 的 MVC 架构将外观和业务逻辑分离,加快了开发速度。 它增强了文档,包含各种内置功能,提高了安全性和可扩展性,并提高了性能。 此外,MVC 简化了非结构化编码,促进了重大项目。
  • 数据迁移: Laravel 包含一个迁移系统,允许您使用 PHP 代码更改数据库结构。 Laravel 模式构建器允许数据库迁移而无需记住它们。 此自动化过程使您能够在不中断或丢失的情况下进行迁移。
  • 内置包: Laravel 包含许多内置包,可帮助您保持代码整洁。 例如,Socialite 软件包通过单击注册系统将 Facebook 或 Google 身份验证集成到您的网站中。
  • 强大的安全性: Laravel 最重要的特性是安全性。 它通过其内置的安全系统在内部处理您网站的安全。 例如,Hashed and Salted 系统保护 Laravel,您不能在其中以明文形式保存密码。 同样,Laravel 通过拦截所有请求和进程来防止黑客在您的服务器上远程安装恶意代码。
  • Artisan: Artisan 是一个命令行工具,可以简化和自动化 Laravel 中的常规编码任务。 强大的 Symfony 控制台组件为其提供动力。 例如,它可以生成 MVC 文件结构或数据库模式,执行代码迁移,并按照要求管理资产。

谁使用 Laravel?

最流行的 Web 开发框架 Laravel 创造了巨大的需求。 因此,各种规模的企业都依赖 Laravel。

已经接受 Laravel 的一些最大的企业包括:

  • 英国广播公司
  • 辉瑞公司
  • 诺维尔公司
  • 旅游雷达
  • 9GAG
  • 阿尔法编码员
  • 关于你
  • Laracasts
  • 艾莉森
  • 发票忍者

CodeIgniter 与 Laravel:正面对比

现在我们已经熟悉了 CodeIgniter 和 Laravel,了解它们的特性和应用,让我们在几个重要参数上对它们进行比较和对比。

相似之处

除了许多差异之外,CodeIgniter 和 Laravel 也有一些相似之处。 因此,在比较 CodeIgniter 与 Laravel 之前,让我们先从相似之处开始。

CodeIgniter 和 Laravel 的相似之处包括:

  • PHP 框架: CodeIgniter 和 Laravel 都是 PHP 框架。 因此,PHP 为 CodeIgniter 和 Laravel 的核心提供支持。 尽管它们具有不同的功能,但它们都代表相同的语言。
  • MVC 架构: CodeIgniter 和 Laravel 都遵循 MVC 开发模式。 然而,CodeIgniter 并不要求严格遵守 MVC 模式,而 Laravel 则严重依赖它。
  • 开源: CodeIgniter 和 Laravel 都是开源的 PHP 框架。 因此,您可以在 GitHub 上找到 Laravel 和 CodeIgniter 的源代码。 您和其他所有人都可以根据您的特定需求修改和调整这些技术。
  • 活动记录: CodeIgniter 和 Laravel 都支持活动记录数据库模式。 它支持使用最少的脚本来检索、插入和修改数据库信息。 CodeIgniter 使用修改后的版本,而 Laravel 通过 Eloquent ORM 使用它。

身份验证和安全

身份验证是 Web 系统安全的重要组成部分。 CodeIgniter 和 Laravel 都有自己有效的身份验证系统。

代码点火器

CodeIgniter 有一个名为 Shield 的内置身份验证库。 它安全、灵活且可扩展,适合多种类型的网站。

它提供多种身份验证功能,例如基于会话的身份验证、个人访问令牌身份验证、基于角色的访问控制、每个用户的权限覆盖等。

拉维

包含 3 个不同步骤的非常复杂的 Laravel 身份验证过程工作流图的图像。
Laravel-圣所-身份验证。 (图片来源:开发)

Laravel 有一个名为 Laravel Sanctum 的内置身份验证系统,这使得实现身份验证变得轻而易举。 您的应用程序的每个用户都可以为他们在 Sanctum 的帐户生成多个 API 令牌。

此外,Laravel 还提供了用于身份验证的包,例如 Laravel-UI、Breeze 和 JetStream。 它们允许您使用这些选项中的任何一个来实现自动验证系统,从而节省您编写额外代码进行身份验证的工作。

可扩展性和可扩展性

可扩展性是增加应用程序的流量、性能和整体大小的能力。 可扩展性是在不改变其代码或架构的情况下扩展其功能的能力。

CodeIgniter 和 Laravel 在可扩展性和可伸缩性方面都站在坚实的基础上。

代码点火器

CodeIgniter 非常轻巧。 Rasmus Lerdorf 将其推荐为最轻量级的框架,因为它没有约定且开销很大,因此具有显着的可扩展性。

CodeIgniter 允许您扩展它的助手、类扩展、库和挂钩。 它还可以帮助您创建核心系统类、替换或删除标准功能,以及以您想要实现可扩展性的任何方式扩展控制器。

因此,您可以通过缓存修改而不影响性能来实现 CodeIgniter 的可伸缩性。

拉维

图像显示了一个 Laravel 可扩展性图,表明使用 MySql 的 Laravel 可扩展性。
Laravel 可扩展性图。 (图片来源:DigitalOcean)

Laravel 允许根据需要扩展其核心组件。 因此,您可以添加到元素或以任何您想要的方式更改它。 更改和增长请求对象可以让您添加首选的辅助方法。

Laravel 的可扩展性使其成为大型应用程序的不错选择。 您可以使用 HAProxy 负载平衡器来平衡 HTTP 请求。 此外,基于令牌的身份验证方法无需考虑会话状态。

此外,通过使用 MySQL、AWS 和其他高级缓存技术,您可以轻松扩展 Laravel 应用程序。

内置模块

模块允许您将复杂的 Web 应用程序划分为更小的模块以加快开发速度。 在内置模块方面,CodeIgniter 和 Laravel 有很大不同。

代码点火器

CodeIgniter 不提供任何模块化功能。 因此,将项目分成不同的工作部分具有挑战性。

但是,如果您使用模块化扩展创建模块化,那么在 CodeIgniter 中模块化是可能的。

拉维

Laravel 有内置的模块特性,鼓励你将一个更大的项目拆分成更小的模块。 拆分使您能够处理项目的不同部分,而无需将项目作为一个整体来处理。

使用模块化方法的另一个重要好处是它带有文件夹结构。 它将您的功能安排在一个高级目录结构中。因此,您可以避免特定于功能的类、模型、配置、翻译等与其他模块重叠。

以下是一些有助于加快开发速度的默认 Laravel 包的列表:

  • Passport: Laravel Passport 在你的 Laravel 应用程序中快速实现一个用于 API 身份验证的 OAuth2 服务器。 Alex Bilbie 的 League OAuth2 服务器为其提供支持。
  • Envoy: Envoy 提供了一种简洁的语法来设置您在远程服务器上运行的常规活动。 Envoy 目前仅支持 Mac 和 Linux 设备。
  • Cashier: Cashier 为 Stripe 和 Braintree 订阅计费系统提供了富有表现力的、流畅的界面。 它可以帮助您创建订阅账单代码、优惠券、订阅数量、取消宽限期和发票 PDF。
  • Scout: Scout 将搜索索引与 Eloquent 记录同步,并向 Eloquent 模型添加全文搜索。
  • Socialite: Socialite 为 Facebook、Twitter、Google、LinkedIn、GitHub 和 Bitbucket 提供了易于使用的 OAuth 界面。

学习曲线

如果您有 PHP 经验,应该熟悉 CodeIgniter 和 Laravel。 但是,这两个框架具有明显不同的功能,可能会导致异常。

代码点火器

CodeIgniter 是一个相对简单的学习和开始工作的框架,它在许多方面类似于从头开始使用 PHP。 CodeIgniter 的安装过程也非常简单。 只需几秒钟。

由于 CodeIgniter 的内置功能很少,您必须从外部安装插件才能获得更多高级功能。 它们可能看起来很复杂,但平均而言,它们比其他框架的插件更容易。

拉维

如果你熟悉 PHP 和 MVC 架构,你可以轻松理解 Laravel 的功能。 但是,如果您是初学者,乍一看学习 Laravel 特性似乎具有挑战性。

例如,如果没有 Laravel 的先验知识,您可能需要广泛的研究和理解才能从模块开始,或者文件夹结构可能看起来难以理解。

Laravel 的安装比 CodeIgniter 的安装复杂。 但是,您可以从官方文档中获取 Laravel 安装说明,这将使事情变得更简单。

结构和灵活性

Laravel 和 CodeIgniter 都在其架构中使用 MVC 框架。 但是两者都有使用相同结构的不同方式。

代码点火器

CodeIgniter 应用程序内部工作流程的复杂图表,分为三个主要区域:视图、控制器和模型。
CodeIgniter 应用程序架构。 (图片来源:Krishna Web Developers)

CodeIgniter 旨在在更短的时间内在整洁的环境中提供最佳性能。 因此,开发过程的每个阶段都旨在实现最佳可用性。

有趣的是,模型和视图在 CodeIgniter 中是可选的。 只有控制器是强制性的。 因此,由于其面向对象编程 (OOP) 基础,CodeIgniter 对 MVC 并不是特别严格。

因此,您在使用 CodeIgniter 时不必完全依赖 MVC 结构。 它为您提供了更多的开发自由度和灵活性。

CodeIgniter 中的 MVC 将数据、表示和逻辑分离,并提供内置组件来管理电子邮件、数据库和会话。 更重要的是,这些内置功能独立于其他部分工作,因此易于维护和升级。

拉维

一个矩形图显示了 Laravel 框架从用户到控制器、模型和显示步骤的视图的工作流程。
Laravel 框架工作流程。 (图片来源:How-To Geek)

作为另一个 PHP 框架,Laravel 也是基于 MVC 架构的。 但与 CongeIgniter 不同的是,Laravel 严格遵循 MVC 架构。 如此一来,Larvel 可以熟练地维护 MVC 结构,从归档到内部运行。

启动起来非常简单。 首先,您必须创建一个生成数据库表的模型。 然后,使用控制器文件与该模型交互以在视图文件中显示结果。

但是,如果您不熟悉 MVC 架构,使用 Laravel 框架可能会很困难,因为它不允许您忽略结构。

性能(速度)

一张图表,显示了不同 PHP 版本的所有 PHP 框架的每秒请求数。
PHP 框架性能基准

PHP 以其稳定性而不是速度而闻名。 因此,在速度方面,CodeIgniter 和 Laravel 有点害羞。

也就是说,尽管规模很小,但仍存在明显的差异。

但是,您可以使用智能缓存策略和优化数据库访问来提高 PHP 性能基准。

代码点火器

CodeIgniter 是一个轻量级框架,其核心只需要几个小库。 如果核心系统需要任何额外的库,它将根据请求加载。 因此,CodeIgniter 的核心系统比 Laravel 更精简、更快。

由于执行率更高,CodeIgniter 也比 Laravel 快一点。 例如,它可以比 Laravel 快 20% 的速度执行请求。

值得注意的是,CodeIgniter 的性能取决于项目因素,例如并发用户数。

拉维

图像以条形图显示不同 PHP 框架(包括 Laravel)的执行时间。
Laravel 执行时间。 (图片来源:Medium)

简而言之,Laravel 比 CodeIgniter 慢。 然而,Laravel 就像拖拉机在平稳的拖车上拉着重物,所以不要把速度和动力混为一谈。

好消息是,如果你想让 Laravel 运行得更快,你可以通过适当的优化来加快它的速度。

通过实现 Laravel 的智能配置和路由缓存、限制未使用的库、优化类映射和 composer 自动加载以及使用 JIT 编译器和队列,您可以将 Laravel 性能和应用程序的加载时间优化至少 20 毫秒。

错误处理

错误处理是指程序从错误中恢复并继续正常运行的过程。 它预测、检测和修复应用程序、编程和通信错误。

CodeIgniter 和 Laravel 都有错误处理系统,但它们处理日志通知的方式不同。

代码点火器

CodeIgniter 包括一个简单的错误处理系统。 它显示开发和测试中的所有错误,但生产中没有。 您可以通过编辑 .env 文件并设置CI ENVIRONMENT变量来更改它。

CodeIgniter 生成三种类型的消息:

  • 错误讯息
  • 调试信息
  • 信息性消息

CodeIgniter 中的错误记录功能允许您将错误保存为文本文件。 无论类或函数范围如何,它都会生成错误消息。

拉维

图片通过工作流程图显示了 Laravel 错误处理过程,解释了不同的阶段,包括错误处理程序、ON EXCEPTION 和 try...catch 连续。
Laravel 错误处理。 (图片来源:Wikitechy)

Laravel 有一个内置的错误处理系统,它会通知你每一个错误。 它会自动检测并记录错误和异常,并将报告发送给您以供进一步操作。

您可以在App\Exceptions\Handler类中找到异常日志。 该类有两个方法:

  • report ()方法
  • render ()方法

人气和就业市场

过去12个月CodeIgniter和Laravel的搜索比例Google Trend搜索引擎截图。
CodeIgniter vs Laravel 谷歌趋势

CodeIgniter 和 Laravel 是最流行的 PHP 框架。 每个框架都有其选择它们的用户群,部分原因是它们的重要性。

让我们根据它们在不同平台和社区中的使用百分比来比较这两个框架的受欢迎程度和就业市场。

代码点火器

根据多项统计,CodeIgniter 是继 Laravel 之后第二受欢迎的 PHP 框架。 CodeIgniter 在 GitHub 上有 18.2k 星。

尽管一些专业人士可能不太可能选择 CodeIgniter 作为他们的工具,但许多大型知名企业都依赖它。 Unified Infotech、Zendesk、Space India、Casio Computer Co.、Nissan 和 McClatchy 都是使用 CodeIgniter 的公司,这表明开发人员的就业市场稳定且前景广阔。

根据 ZipRecruiter 的薪资数据,CodeIgniter 开发人员在美国的年收入在 66,000 美元到 105,000 美元之间。

拉维

JetBrains 研究表明,50% 的 PHP 用户目前正在使用 Laravel。 专业人士特别喜欢它的极端稳定性和处理广泛而复杂的系统的能力。

根据从各种技术来源、社交媒体和在线讨论论坛收集的数据,它的受欢迎程度很高。 例如,在 GitHub 上,Laravel 有 71.2k 星,这反映了该框架的受欢迎程度。

截至 2022 年 1 月最流行的后端框架的条形图。
最流行的后端框架。 (图片来源:统计与数据)

Pfizer、BBC、About You 和 TourRadar 等大公司使用 Laravel 来构建和维护数字平台。 此外,像 Laracasts、Barchart 和 AsgardCMS 这样的流行应用程序使用 Laravel 作为他们的后端服务器。

据 Glassdoor 称,大多数 Laravel 开发人员的年薪约为 83,000 美元至 166,000 美元。

支持和社区

长期以来,PHP 一直是一项值得信赖的技术。 因此,大量用户依赖于 PHP 及其框架。

PHP 用户和开发者也因此而关注各个框架。 因此,社区很重要,如果你寻求帮助,你会得到很多帮助。 这很简单:您需要时向有经验的用户学习,并在其他人寻求帮助时指导他们。

代码点火器

CodeIgniter 在其官方网站上有大量文档,解释并涵盖了它的大部分功能。 它可以成为您学习和支持的主要官方资源。

CodeIgniter 在 Facebook、Reddit、Stack Overflow、LinkedIn 和类似平台上有几个活跃的社区。 这些社区有成千上万的成员,他们经常发布和共享相关的 CodeIgniter 和 PHP 内容。

无论您是初学者还是高级 CodeIgniter 开发人员,我们都建议您加入上面列出的社区。 在那里,您可以学习在官方文档中找不到的所有您需要的东西。

拉维

Laravel 是 Web 开发人员中最流行的 PHP 框架。 因此,它在 GitHub、Facebook、LinkedIn、Reddit、Stack Overflow 和许多其他在线论坛上拥有庞大的开发人员社区。

每个社区中心都很活跃,并提供与 Laravel 相关的重要建议和无尽的支持。 如果你在使用 Laravel,这些社区可以帮助你——或者你也可以帮助他们。

此外,Laravel 官方网站有组织良好的文档,如果您想学习如何使用 Laravel,这是一个很好的起点。

模板和 API

尽管都是 PHP 框架,但 CodeIgniter 和 Laravel 具有不同的模板引擎理念。 但是,他们都专注于使用 API。

代码点火器

CodeIgniter 带有一个称为模板解析器类的基本模板引擎。 您可以在使用 CodeIgniter 的同时使用纯 HTML 和 CSS 文件。 您还可以集成一些第三方模板引擎,如 Smarty 或 Twig。

CodeIgniter 还提供了一个 API 响应特性,您可以将其与任何控制器一起使用来简化常见的响应类型,而无需记住要返回哪个 HTTP 状态代码。

拉维

Laravel 包含一个称为 Blade 的模板引擎。 Blade 的语法结构简单而丰富。 Blade 比许多模板引擎更连贯和简单,因为它类似于普通的 HTML 文件。

Laravel 有一个简单的 API 身份验证解决方案,使用提供给每个用户的随机令牌。 因此,带有令牌驱动程序的 API 守卫已经在您的config/auth.php配置文件中指定。

更重要的是,Laravel 的足智多谋的控制器让创建 Restful API 变得简单。 例如,在routes/API中,您可以为足智多谋的控制器创建一个路由。

语法

CodeIgniter 有一个名为 Template Parser Class 的模板引擎,但这不是必需的; 事实上,使用纯 PHP 可以使视图文件运行得更快。

另一方面,Laravel 专门使用 Blade 模板语法。

让我们更详细地讨论每一个。

代码点火器

CodeIgniter 是面向对象的,依赖于 PHP、HTML 和 CSS 来构建 Web 应用程序。 CodeIgniter 也不需要模板引擎,但一些开发人员喜欢它们,因此如果您愿意,可以使用模板解析器类。 因此,您可以使用 PHP 内置的模板引擎或添加第三方工具,如 Smarty。

接下来,让我们看看一些 CodeIgniter 语法:

CodeIgniter 控制器

  • CI_Controller
  • default
  • index

CodeIgniter 变量

  • $config
  • $db
  • $lang

CodeIgniter 函数

  • is_php()
  • is_really_writable()
  • load_class()
  • is_loaded()
  • get_config()
  • config_item()
  • show_error()
  • show_404()
  • log_message()
  • set_status_header()
  • get_mimes()
  • html_escape()
  • remove_invisible_characters()
  • is_https()
  • function_usable()
  • get_instance()
  • _error_handler()
  • _exception_handler()
  • _stringify_attributes()

CodeIgniter 常量

  • ENVIRONMENT
  • FCPATH
  • SELF
  • BASEPATH
  • APPPATH
  • VIEWPATH
  • CI_VERSION
  • MB_ENABLED
  • ICONV_ENABLED
  • UTF8_ENABLED
  • FILE_READ_MODE
  • FILE_WRITE_MODE
  • DIR_READ_MODE
  • DIR_WRITE_MODE
  • FOPEN_READ
  • FOPEN_READ_WRITE
模板解析器类

让我们看看使用模板解析器类。 您可以像 CodeIgniter 中的其他类一样初始化它:

 $this->load->library('parser');
解析模板

您可以使用parse()来呈现简单的模板:

 $data = array( 'blog_title' => 'My Blog Title', 'blog_heading' => 'My Blog Heading' ); $this->parser->parse('blog_template', $data);
安全等级

在涉及安全类的地方,您可以使用xss clean()方法使用 XSS 过滤器过滤数据:

 $data = $this->security->xss_clean($data);
跨站请求伪造 (CSRF)

对您的application/config/config.php文件进行以下修改将启用 CSRF 保护:

 $config['csrf_protection'] = TRUE;

拉维

正如我们之前讨论的,Laravel 使用内置的 Blade 模板引擎及其语法。 Blade 使使用模板引擎和编写语法变得容易。

Laravel Blade 由条件语句和循环构成。 它也非常人性化。 例如,要制作一个 Blade 模板,您只需要将视图文件保存为.blade.php而不是.php

六个盒子的图像具有 Laravel Blade 语法,包括 header.blade.php、sidebar.blade.php 等
Laravel Blade 语法。 (图片来源:Medium)

接下来让我们看看一些 Laravel Blade 语法。

显示数据

将变量的值放在大括号之间以打印它:

 {{$variable}};
刀片环

刀片模板引擎提供的循环指令是:@for、 @endfor endfor、@ @endforeach @endwhile @for @while@foreach

 @for ($i = 0; $i < 10; $i++) The current value is {{ $i }} @endfor @foreach ($users as $user)

这是用户 {{ $user->id }}

@endforeach @forelse ($users as $user)
  • {{ $user->name }}
  • @空的

    没有用户

    @endforelse @while(真)

    我永远循环。

    @endwhile
    三元运算符

    Blade 中的三元运算符是 Laravel 对if-else语句的替代:

     {{ User::has('email') ? 'Yes' : 'No' }}
    如果语句

    您可以使用以下指令创建 if 语句:@if、 @elseif@endif @else@if 。 这些指令的功能与其对应的 PHP 指令相同:

     @if (count($records) === 1) I have one record! @elseif (count($records) > 1) I have multiple records! @else I don't have any records! @endif
    原始PHP

    有时,将 PHP 代码添加到您的视图中是有益的。 例如,您可以使用 Blade @php指令在您的模板中执行一个简单的 PHP 块:

     @php $counter = 1; @endphp
    堆栈

    Blade 允许您推送到命名堆栈,您可以在不同的视图或布局中呈现这些堆栈。 指定您的孩子的视图需要哪些 JavaScript 库非常有用:

     @push('scripts') @endpush
    CSRF 字段

    您可以在应用程序的 HTML 表单定义中包含隐藏的 CSRF 令牌字段,以便中间件可以检查请求。 使用@csrf Blade 指令,您可以生成令牌字段:

     @csrf ...

    CodeIgniter 与 Laravel:比较表

    让我们并排比较 CodeIgniter 和 Laravel,并复习一些最基本的编程参数:

    代码点火器拉维
    已创建2006年2011年
    类别网站开发框架网站开发框架
    基于PHP PHP
    建筑学MVC 严格的MVC
    开源开源框架开源框架
    最低 PHP 版本7.3 8.0
    可扩展支持可扩展性支持可扩展性
    可扩展性可扩展框架超级可扩展框架
    学习曲线比较容易使用高级功能时有些挑战。
    市场份额0.22% 0.32%
    GitHub 启动18.2k 69.5k
    内置模块不提供内置模块提供内置模块
    模板引擎PHP专有刀片模板引擎
    数据库模型面向对象关系型面向对象
    编程范式面向对象的事件驱动函数式面向组件
    HTTP 支持不支持 HTTPS 支持自定义 HTTPS 路由
    验证不提供内置身份验证提供内置身份验证
    单元测试不提供内置的单元测试支持提供内置的单元测试支持
    数据库支持MySQL、PostgreSQL、SQLite3 MariaDB、MYSQL、PostgreSQL、SQLite3、SQL Server

    CodeIgniter vs Laravel:你应该选择哪个?

    到目前为止,您已经大致了解了这两个 PHP 框架的大部分优点和缺点。 And you are aware that, despite sharing the same root, both CodeIgniter and Laravel have their differences and their own areas of strength.

    Both frameworks contain numerous features to simplify, stabilize, secure, and scale your project using PHP in a way that suits your development process.

    Therefore, you need to be sure of the type of system you want to construct and the necessary technology involved before you can choose one over the other.

    Below are some ideas that might help you decide whether to use CodeIgniter vs Laravel in different ways. As always, preferences differ from one developer to the next.

    When To Use CodeIgniter

    You can use CodeIgniter if your project requires the following:

    • Better result, less code: CodeIgniter is well known for producing better results with fewer lines of code. It speeds up web app development because you don't need third-party libraries.
    • Simple, error-free configuration: CodeIgniter has a linear and flexible folder structure that helps to simplify PHP syntax. This construction style enables you to create web applications quickly without encountering syntax errors. CodeIgniter works well for simple, scalable websites.
    • Faster performance: With a faster execution rate and development process, CodeIgniter runs ahead of Laravel. Choose CodeIgniter to build a fast, efficient website. However, performance may vary for larger websites.
    • You're a beginner: CodeIgniter is the best choice if you are a new developer looking to build an app. It keeps everything concise and streamlined for you.

    When To Use Laravel

    Image listing some of the most significant use cases of Laravel, such as
    Laravel use cases. (Image source: Aglowid)

    If your project requires any of the following, you should use Laravel:

    • Large, complex websites: Laravel is a better choice for extensive websites that have multiple operations running at the same time. The framework has depth and can proficiently handle a more complex system, whereas CodeIgniter may struggle with larger projects.
    • Numerical computation: Laravel might be a better choice if your website requires performing numerical analysis — for example, stock or trading websites. It can handle larger data sets, and its multi-thread performs complex calculations without interfering with performance.
    • Fast development: Due to its pre-built templates and community assistance, Laravel is one of the quickest application development frameworks.
    • High security: Laravel has a built-in security and authorization system that employs the BCrypt hashing algorithm for password encryption. Besides, Laravel forbids the storage of plaintext passwords in the database. So, if you want a high-security website, Laravel is the way to go.
    • You're an expert: If you are an experienced Laravel developer with a background that includes working with intermediate systems, Laravel may be the ideal tool for you.

    概括

    CodeIgniter and Laravel are the heirs of PHP. Recent years have seen programmers worldwide praising these frameworks' unique features and usefulness.

    CodeIgniter and Laravel both have their benefits, but ultimately, the needs of your users and your development process should determine which framework you use.

    Each is reliable and effective and will remain a viable development option for a long time to come. However, one technology may meet all of your needs, while the other may fall short.

    Rather than looking for the most powerful, look for the technology that provides you with the most reliable and efficient solution for your project and its scope.

    Regardless of which PHP framework you pick, you'll need a place to host your project when it's done. Kinsta offers state-of-the-art Application Hosting and Database Hosting to meet all your needs in a single, easy-to-use platform.

    You'll also benefit from Kinsta's industry-leading security measures and their 24/7 expert support, so keep it in mind for when you're ready to move toward launch.

    Have you ever worked on a project using CodeIgniter or Laravel? How did it turn out? 在下面的评论中分享您的想法!