您应该使用PHP框架吗? 五个利弊

从路由HTTP请求到访问数据库并呈现用户界面,大多数Web应用程序之间都有很多共同点。 他们中的许多人都允许访问者登录,并且很难想象没有电子邮件发送的Web应用程序。

软件框架是将这种观察结果投入使用的一种方式。

通过提取共同特征和应用程序的基础体系结构并将它们捆绑到可重用的模板和库集合中,框架使开发人员可以专注于使他们的项目脱颖而出的内容。

实际上,当您将以前的项目用作样板而不是从头开始时,您已经在使用临时框架。 流行的PHP框架(例如LaravelYiiSymfony)通过将重点放在设计框架的体系结构和工具上,然后将其提供给其他开发人员在他们的项目中使用,来采用这种方法得出合乎逻辑的结论。

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

为了回答这个问题,在本教程中,我们将探讨使用PHP框架的五个利弊。

使用PHP框架的五个优点

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

1.快速发展

在如今的基于实验,快速原型制作并尽快将最小的可行产品推向世界的新兴公司中,开发速度可能是决定您业务成败的关键。

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

一个精心设计的PHP框架从开源社区中选择最佳解决方案来解决常见问题,并在此基础上为您提供一个应用程序体系结构(在大多数情况下,基于模型-视图-控制器模式)来指导您的发展。

这样,您无需花时间计划应用程序的体系结构和评估各种可用的库,而可以从功能全面的模板开始,如果有的话,可以直接使用模板来构建特定于应用程序的功能。 许多PHP框架还附带一个命令行工具,您可以使用该工具来生成代码并节省更多宝贵的开发时间。

2.框架使您的应用程序更安全

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

包含在现代PHP框架中的解决方案已经由多个开发人员使用该框架进行了持续测试,同行审查和验证。 由于框架是开源的,因此安全性问题和您在专有代码中可能忽略的其他问题会很快被发现并解决。

也就是说,重要的是要记住,使用框架并不意味着您可以完全忘记安全性和良好的开发实践。 确保按原样使用框架,使其保持更新状态,并在诸如参数验证之类的事情上发挥自己的作用-使用框架的工具,并不是那么困难。

3.维护更简单

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

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

您仍然必须尽自己的一份力量。 但是与从头开始相比,框架及其文档可以使您联想到这些概念,并轻而易举地使用它们肯定会有所帮助。

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

从某种意义上讲,这就像有一组开发人员免费为您工作!

4.加强团队合作

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

如果不了解您的设计决策和完整的文档(请面对现实:尤其是在快速开发的世界中,文档往往是事后的想法),他们将很难将自己的头脑放在应用程序的代码周围。

使用PHP框架将有助于使新开发人员更轻松地开始从事该项目。 他们很可能已经熟悉该框架,因此可以将所有精力都放在理解应用程序的细节上。 即使该框架对他们来说是新的,文档,在线教程和熟悉的设计模式也将帮助他们以最小的努力来快速上手。

所有这一切都可以让您继续开发应用程序,而不是教开发人员您的思维方式。

5.社区为您服务

最后,使用PHP框架的显着优势来自周围活跃的开发人员和用户的活跃社区。

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

作为此类开发人员社区的一部分,您将成长为开发人员,可以快速学习并将所学内容应用于应用程序开发。

而且,如果您如此愿意,您可以以任何自然和充实的方式回馈并参与开源项目。

使用PHP框架的五个缺点

既然我们已经了解了使用PHP框架如何为您的开发提供帮助,让我们看一下不利之处,以及为什么有时不使用它可能是更好的选择。

1.较慢的执行

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

但是,在大多数Web应用程序中,框架的效率影响比框架本身更多地与您使用框架有关。 例如,虽然Active Record实现是一种访问数据库的便捷方法,但在必须一次处理数据库中的多行的地方使用它没有任何意义。

因此,这归结为了解应用程序的需求,但又不允许您自己依赖于使用它的特定方式。 有时,即使使用框架,也可以回避并以较低的抽象级别编写一些代码。

2.特定问题的一般解决方案

PHP框架的思想是作为大多数开发人员在开发Web应用程序时会遇到的重复需求的通用解决方案。 但是,我们应该在框架中包括哪些内容以及应该为应用程序(或第三方附加组件)实施留下哪些内容呢?

一些开发人员认为,这就是许多框架出错的地方。

PHP的创建者Rasmus Lerdorf说:

“没有人有一个普遍的问题。 每个人都想解决一个非常具体的问题。 通用框架虽然可以解决,但通常会以其他不需要的东西来解决。 最终,每个请求都完成了。”

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

尽管大多数框架都是基于延迟加载的,并且不会包括应用程序不使用的框架部分,但仍然存在增加的复杂性,从而导致不必要地修改了框架附带的功能,但您却没有这样做不需要

3.框架需要时间来学习和掌握

虽然PHP框架将您吸引到了好的代码上,但这并不能保证。 如果在不了解框架及其背后的设计模式的情况下使用框架,则很可能最终会陷入结构化的混乱局面。

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

因此,如果您很着急(而您的项目很小),则可能不是时候开始学习新框架。 相反,请考虑使用微型框架,甚至从头开始使用某些熟悉的库。

然后,在您的日程安排允许时,花些时间学习一个成熟的PHP框架。

4.有限的可见度和控制

使用软件框架会将您的应用程序开发移至更高的抽象层次。 这是设计使然,通常是一件好事。 但是,很高兴意识到它也会导致问题。

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

另外,如果在完全理解PHP语言本身之前就开始使用框架,则可能会使框架的功能与语言功能混为一谈,即使纯PHP会是更好的选择,但最终还是会使用框架的功能。

5.框架引入了外部依赖

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

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

减轻这种风险的一种好方法是在开发人员和用户活跃社区中使用可靠的流行框架。 但是即使这样,还是需要考虑一下:使​​用框架的好处是否足以使冒险值得承担?

结论

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

然而,以上结论的关键是为这项工作选择合适的工具。 每个项目都是不同的,即使是适合一个项目的框架也可能不适用于下一个项目。 为简单起见,问问自己一个成熟的框架是否适合该项目,或者使用诸如Lumen之类的微型框架可能是更好的解决方案。

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

选择框架时,请确保您选择的框架得到积极开发和支持,并遵循合理的软件工程实践。 这样,您可以通过确保基础框架不会遭受严重破坏来保证应用程序的未来发展。

最后,即使您决定不使用它,熟悉一个或多个现代PHP框架也是一个好主意。 学习它们是学习和改进软件开发技能的绝妙方法,并且可以帮助您掌握不断发展的PHP开发世界。

翻译自: https://code.tutsplus.com/tutorials/should-you-use-a-php-framework-five-pros-and-cons--cms-28905

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值