在社交媒体上,新的 PHP 开发人员经常会问“我的项目应该使用什么框架”,通常给出的答案是“Laravel”或“Symfony”。
虽然这些都是不错的选择,但这个问题的正确答案应该是“你需要框架做什么?”
正确的框架应该能够满足您的需要,并且不会包含大量您永远不会使用的功能。
如果您正在制作一个只有一条路线的网站,那么使用 Laravel 或 Symfony 会对网站进行过度设计,而对于复杂的网站,Laravel 或 Symfony 可能是正确的选择。
微型框架非常适合构建不需要全栈框架提供的所有功能的中小型网站。
虽然有很多,但 Slim 和 Flight PHP 都是微框架的绝佳示例。
最近我建立了一个小型网站,要求用户解决 10 个与数据库相关的问题。它具有三种路线和一些基本查询来获取问题并比较答案。
对于这样的小项目,微框架是一个不错的选择。我在 Slim 和 Flight PHP 上构建了该网站来比较它们。
如果您之前没有使用过特定框架,那么使用提供的框架项目通常是一个很好的起点。
Flight PHP 的骨架项目几乎符合我的预期,重量轻,MVC 设置简单,易于理解文件夹结构并知道项目中的所有内容应该放在哪里。
对于刚接触该框架的人来说,启动和运行的学习曲线很小。
关于composer库,总共只有5个(包括核心库),4个用于生产。
骨架的制作大小为 1.6Mb。
Slims骨架项目让我大吃一惊,目录结构比我预想的要复杂。更适合用于大型项目而不是小型项目的结构。对于微框架来说,这是出乎意料的。
Slim 骨架比 Flight PHP 重一点。 21 个作曲家库,其中 9 个用于生产。该项目的生产大小为3.3Mb。
两者都是开箱即用,只需要最少的额外配置。
我决定通过创建自己的设置来构建网站,而不是使用骨架。这样做的优点是我能够根据我的需求定制框架,并了解它们对于不同结构的灵活性。
使用微框架的一大优势是能够构建它们来准确地完成您需要的操作,而无需不必要的开销,并在需要时添加功能和库。
我对 Flight PHP 的设置与框架没有显着不同,虽然我最终得到了更少的目录和不同的作曲家库,但结构上是相似的。
使用 Slim,项目的结构最终与骨架显着不同。
Slim 很灵活,没有对结构做出假设,并且在与骨架完全不同的结构下工作得很好。
Flight PHP 在这种方式上也很灵活,如果需要的话允许更复杂的结构,向框架中添加新的库是直接的。
路由
从路由的角度来看,两者都很好用。它们都很容易设置,无需阅读太多文档。
Flight PHP 中的路由设置比 Slim 稍微简单一些,并且使用的代码更少,但设置起来都不困难。
路由组、正则表达式功能和中间件选项使路由变得灵活,同时仍然易于使用。
数据库连接
使用 Slim,我们期望您应该使用 Eloquent 或 Doctrine 等 ORM 来进行数据库查询,而 Flight PHP 为 PDO 提供了一个简单的包装器,可以在以下情况下使用:您需要并且可以选择将 Active Record 添加到项目中以进行查询构建。
对于像我正在从事的项目这样的小项目,使用 ORM 似乎有点多余,所以我最终为 Slim 构建了一个小型 PDO 包装类,类似于 Flight PHP 中内置的一个.
ORM 很棒,但是内置灵活性来选择我希望如何编码数据库查询是一个很好的功能。
通用编码
Slim 和 Flight PHP 框架都擅长让您以自己的方式编写代码。
一些框架往往会强迫您以特定的方式进行编码,有时您会感觉自己正在与框架作斗争。
框架应该与你合作而不是与你作对,这两个框架都感觉像是在与我合作。
Slim 还提供了许多方便的附加组件,包括 CSRF 集成和 HTTP 缓存。
Flight PHP 提供了额外的附加组件,包括权限和 Active Record。
所有这些附加组件都是有用的附加组件,无需使用第 3 方解决方案或构建您自己的解决方案。
在 Flight PHP 中返回 JSON 作为响应比在 Slim 中更干净,Slim 3 有一个方便的 withJson 响应。虽然 Slim 4 更多地遵循 PSR-7,但这确实意味着构建 JSON 响应需要更多代码。
如果我要经常使用 JSON 响应,我可能会创建一个包装器以使其更加方便,同时仍然遵守 PSR-7 标准。
这是两个框架之间的显着差异,Slim 感觉它需要通过创建类来进行更多定制,以清理和简化代码库,而 Flight PHP 已经为您做到了这一点。
Slim 提供了许多辅助中间件。为了使某些功能正常工作,需要中间件。
一个例子是使用 FETCH 从 Javascript 获取数据。 Slim 有一个 getParsedBody 方法来根据 POST 请求创建数据数组。
但是,为了使用它,需要将 addBodyParsingMiddleware 添加到容器中。
这对新开发人员来说有点陷阱,但也提供了对可选功能的访问,这可以通过仅启用您需要的功能来降低框架的整体占用空间。
Flight PHP 通过配置文件实现这一点,一些功能可以通过配置而不是通过中间件启用来打开和关闭。
速度测试
根据基准测试,比较两者有有趣的结果,Slim 在某些方面胜过 Flight PHP,而 Flight PHP 在其他方面胜过 Slim。
在我自己的代码上对这两个框架进行测试表明,Flight PHP 比 Slim 具有更快、更一致的响应时间。
前端
GET 请求返回 JSON
返回 JSON 的 POST 请求
我发现值得注意的是使用 Slim 时的异常峰值。
多次运行这些测试每次都会产生与我上面显示的结果相似的结果,两者的响应时间通常都很好,但 Slim 中的异常峰值在测试 Flight PHP 时不会出现,并且 Flight PHP 通常具有更好的响应时间响应时间。
如果您还没有尝试过微框架,请尝试一下,那里有一些框架,尝试它们并看看每个框架中您喜欢什么和不喜欢什么,这可能是一次很好的学习经历一。
Slim 和 Flight PHP 都是很棒的微型框架。
Slim 是一个坚实的框架,具有一些不错的功能,可以安静地为您工作。
Flight PHP 重量更轻,其简单性使得学习该框架变得非常容易。
良好的响应时间和更简化的代码来实现相同的目标,使其成为微框架使用的一个非常好的选择。
将这两个并排放置后,我确实更喜欢 Flight PHP 而不是 Slim,但与任何框架一样,请尝试一下,看看它是否适合您。
毕竟,正确的框架是一个能够完成您需要它做的事情的框架。
航班 PHP
超薄框架
免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。
Copyright© 2022 湘ICP备2022001581号-3