卓越飞翔博客卓越飞翔博客

卓越飞翔 - 您值得收藏的技术分享站
技术文章16641本站已运行3320

使用 PHP 框架的优点和缺点:它适合您吗?

使用 PHP 框架的优点和缺点:它适合您吗?</p><p>从路由 HTTP 请求到访问数据库和呈现用户界面,大多数 Web 应用程序彼此之间有很多共同点。其中许多允许访问者登录,很难想象没有电子邮件发送的 Web 应用程序。 </p><p>

软件框架是将这种观察结果付诸应用的一种方法。

通过提取常见特征和应用程序的底层架构,并将它们捆绑到可重用的模板和库集合中,框架允许开发人员专注于使他们的项目脱颖而出的因素。

事实上,当您使用之前的项目作为样板而不是从头开始时,您就已经在使用临时框架了。流行的 PHP 框架(例如 Laravel、Yii 或 Symfony)通过重点关注设计框架的架构和工具,然后将其提供给其他开发人员在他们的项目中使用,从而采用这种方法得出其逻辑结论。

但是使用框架总是最好的方法吗?或者有时只使用纯 PHP 从头开始​​是否有意义?

为了回答这个问题,在本教程中,我们将了解使用 PHP 框架的五个优点和缺点。

使用 PHP 框架的五个优点

让我们首先看看使用 PHP 框架如何帮助您进行应用程序开发。

1。快速发展

在当今基于实验、快速原型设计以及尽快将最低可行产品推向世界的初创企业中,开发速度可能决定您业务的成败。

使用 PHP 框架是满足此要求的一种方法。

精心设计的 PHP 框架会从开源社区中选择常见问题的最佳实现,并在它们的基础上构建,为您提供应用程序架构(在大多数情况下,基于模型-视图-控制器模式) )来指导您的发展。

这样,您就不必花时间规划应用程序的架构和评估各种可用的库,而是从功能齐全的模板开始,然后直接构建特定于您的应用程序的功能。许多 PHP 框架还附带命令行工具,您可以使用它来生成代码并节省更多宝贵的开发时间。

2。框架让您的应用程序更安全

在加快开发速度的同时,框架还可以让您更加安全:您的工作速度很快,但这不是通过使用快速而肮脏的解决方案来实现的,而是通过使用经过验证的最佳实践和现成的组件来实现。

现代 PHP 框架中包含的解决方案由使用该框架的多个开发人员进行持续测试、同行评审和验证。由于框架是开源的,因此您在专有代码中可能忽视的安全问题和其他问题很快就会被注意到并得到修复。

也就是说,重要的是要记住,使用框架并不意味着您可以忘记所有有关安全性和良好开发实践的内容。确保您按照框架的预期使用该框架,保持其更新,并在参数验证等方面尽自己的一份力量——使用框架的工具,这并不是那么困难。

3。维护更方便

通过为您的应用程序提供健全的结构并推动您采用软件开发最佳实践和模式,PHP 框架将指导您编写松散耦合且尽可能少重复的代码。换句话说,它很容易阅读、测试、维护和进一步开发。

当今几乎所有流行的 PHP 框架都是面向对象的,并且在开发时考虑了自动化测试甚至测试驱动开发。

你仍然需要尽自己的一份力量。但与从头开始相比,一个框架及其文档提醒您这些概念并推动您使用它们肯定会有所帮助。

使用框架使应用程序维护变得更容易的另一种方法是通过其共享组件。由于框架库和帮助程序是独立于您的应用程序开发的,因此您可以将应用程序的大部分维护工作交给框架开发人员。

在某种程度上,这就像有一个开发团队免费为您工作!

4。更强的团队合作

作为开发人员,您熟悉您的类和函数并且可以轻松使用它们。但当你引入团队成员时,情况就会发生变化。

如果不了解您的设计决策和完整的文档(让我们面对现实:尤其是在快速开发的世界中,文档往往是事后才想到的),他们会发现很难理解您的应用程序代码。

使用 PHP 框架将有助于新开发人员更轻松地开始项目工作。他们很可能已经熟悉该框架,并且可以将所有注意力集中在理解应用程序的细节上。即使该框架对他们来说是新的,文档、在线教程和熟悉的设计模式也将帮助他们以最小的努力加快速度。

在此期间,您可以继续开发应用程序,而不是教开发人员您的思维方式。

5。社区随时为您服务

最后,使用 PHP 框架的一个显着好处来自于聚集在他们周围的活跃的开发人员和用户社区。

所有主要框架都吸引开源贡献者,他们除了致力于框架本身之外,还开发其他小部件、库和帮助器组件,供其他人包含在他们的应用程序中。其他贡献者编写教程和书籍或创建视频来解释他们如何在现实项目中使用框架的细节。

作为此类开发人员社区的一部分,您将成长为一名开发人员,快速学习并将所学知识应用到应用程序开发中。

如果您愿意,您可以以任何让您感到自然和满足的方式回馈并参与开源项目。

使用 PHP 框架的五个缺点

既然我们已经了解了使用 PHP 框架如何帮助您进行开发,那么让我们来看看它的缺点,以及为什么有时不使用 PHP 框架可能是更好的选择。

1。执行速度较慢

与运行简单的 PHP 脚本相比,PHP 框架总是以在调用代码之前加载的类和库的形式增加复杂性和开销。对于需要快速运行的有限功能集的快速脚本和 API,这种差异可能很显着。

然而,在大多数 Web 应用程序中,框架的效率影响更多地取决于您如何使用它,而不是框架本身。例如,虽然 Active Record 实现是访问数据库的一种便捷方式,但在必须同时处理数据库中的多行的地方使用它是没有意义的。

因此,这取决于了解应用程序的需求,但又不允许自己执着于特定的使用方式。有时,即使在使用框架时,回避并在较低抽象级别编写一些代码也是有意义的。

2。针对特定问题的通用解决方案

PHP 框架的理念是成为大多数开发人员在开发 Web 应用程序时会遇到的重复需求的通用解决方案。但是,我们应该在哪里划定框架中包含哪些内容以及将哪些内容留给应用程序(或第三方附加组件)来实现?

根据一些开发人员的说法,这是许多框架出错的地方。

PHP 的创建者 Rasmus Lerdorf 曾说过:

“没有人有普遍的问题。每个人都有一个想要解决的非常具体的问题。通用框架虽然可以解决这个问题,但通常会以一种让你得到很多你不需要的其他东西的方式来解决它。最终每个请求都会完成。”

因此,如果您决定使用框架,请务必确保选择一个适合您的应用程序需求的框架。

虽然大多数框架都基于延迟加载,并且不会包含应用程序不使用的框架部分,但增加的复杂性仍然存在,导致在删除框架附带的功能时进行不必要的修改,但是你不需要的。</p><p>

3。框架需要时间来学习和掌握</p><p>

虽然 PHP 框架会推动您编写出优秀的代码,但它并不能保证一定能实现。如果您在不了解框架及其背后的设计模式的情况下使用框架,那么您很可能最终会遇到一个大的、结构化的混乱。

对于已经从其他框架或项目熟悉这些设计原则的人来说,学习曲线会相对较短。对于经验较少的开发人员来说,学习时间会更长。更不用说掌握框架了。

因此,如果您很赶时间,并且您的项目很小,那么可能不是开始学习新框架的时候。相反,请考虑使用微框架,甚至从头开始并使用一些您熟悉的库。

Then, take the time to learn a full-blown PHP framework when your schedule allows.

4。有限的可见性和控制

使用软件框架可以将您的应用程序开发提升到更高的抽象级别。这是设计使然,通常是一件好事。然而,很高兴认识到它也可能导致问题。

虽然框架模板的许多部分都需要自定义,但框架的核心及其库就像一个黑匣子,您可以使用但没有太多控制权。您可以提出改进建议,但最终由框架的开发人员决定是否包含该更改。

此外,如果您在完全理解 PHP 语言本身之前就开始使用框架,您可能会将该框架的功能与语言功能相混淆,并且最终会使用该框架的功能,即使纯 PHP 是更好的选择。

5。框架引入外部依赖

框架始终是您的应用程序的外部依赖项 - 由您和您的团队以外的其他人控制的代码。虽然这通常不是问题,但如果您正在构建的软件是您业务的核心部分,则值得考虑。

问问自己,如果框架的开发被放弃或朝着你不想遵循的方向发展,你会怎么做。

降低这种风险的一个好方法是使用可靠、流行的框架以及活跃的开发人员和用户社区。但即便如此,还是需要考虑一下:使​​用框架的好处是否足以值得冒这个风险?

结论

现代 PHP 框架是软件开发人员工具箱中的强大工具:它可以为您节省大量时间和精力,让您在开发 PHP 应用程序时高枕无忧。请记住,这不应取代首先学习核心 PHP!

然而,上述结论的关键是为工作选择正确的工具。每个项目都是不同的,即使是适合一个项目的框架也可能不太适合下一个项目。力求简单,问问自己成熟的框架是否适合该项目,或者使用像 Lumen 这样的微型框架是否是更好的解决方案。

从头开始使用普通 PHP 很少是最好的选择,但是在开发一个非常简单的应用程序(例如没有太多交互性的网站)时,这也值得考虑 - 并且记住,您始终可以通过使用 Composer 选择来扩展它您选择的库。

选择框架时,请确保您选择的框架得到积极开发和支持,并遵循良好的软件工程实践。这样,您就可以确保底层框架不会悄无声息地消亡,从而让您的应用程序面向未来。

最后,即使您决定不使用其中一个,熟悉一个或多个现代 PHP 框架也是一个好主意。研究它们是学习和提高软件开发技巧的绝佳方法,并帮助您在不断发展的 PHP 开发世界中保持领先地位。

其他综述

  • 菜鸟选择 JavaScript 框架指南
  • CodeCanyon 提供 20 个有用的 PHP 框架</p><p>
  • 选择最适合您的框架的快速指南</p><p>

卓越飞翔博客
上一篇: 使用C语言将字符串转换为数字和数字转换为字符串
下一篇: 返回列表
留言与评论(共有 0 条评论)
   
验证码:
隐藏边栏