广州北大青鸟计算机职业培训学校
互联网技术培训、软件技术培训、大数据培训、云计算培训、数据分析培训信息网
当前位置:网站首页 > 培训教程 > 网站开发 > 正文

PHP已不再是当年那个“设计糟糕”的语言

作者:admin01发布时间:2020-09-22分类:网站开发浏览:1029


导读: PHP每年都会推出一个新的版本;  自PHP5代之后,其性能不断提升;  有框架、包和平台组成的活跃生态系统;  过去几年间,PHP添加了许多新的特性,且现在仍在持续演进;  ...

 PHP每年都会推出一个新的版本;


  自PHP 5代之后,其性能不断提升;


  有框架、包和平台组成的活跃生态系统;


  过去几年间,PHP添加了许多新的特性,且现在仍在持续演进;


  许多工具如静态分析器也越发成熟,未来也将继续发展。


  更新:很多人希望我能够展示一下实际代码,这是我其中一个业余项目的源代码,它是用PHP和Laravel写的,另外还有一个是我们在办公室负责维护的上百个OSS包的列表。


  https://github.com/brendt/aggregate.stitcher.io


  https://spatie.be/opensource/packages


  回顾历史


  让我们先快速回顾一下PHP的版本发布周期。现在PHP的版本是7.3,预计2019年末将发布PHP 7.4,7.4之后的版本将会是PHP 8.0。


  从5.X版本之后,PHP核心团队一直在努力每年发布一个新版本,并且在过去的4年间,这一目标一直完成得很好。


  大致来说,每个新版本都会用2年时间进行积极地支持,然后用一年进行“安全修补”工作。这样做的目的是促使PHP开发者尽可能保持最新状态,例如每年都升级比从5.4直接跳到7.0要简单得多。


  PHP具体的版本发布情况,可以查看:


  https://www.php.net/supportedversions.php


  搞清楚PHP的发展历程后,我们来谈谈大家对PHP的常见误解。


  PHP的性能


  在5.X版本时代,PHP的性能平均而言是最好的。而在7.0时代,大部分的PHP核心都从零开始重写了,其性能能够达到之前的23倍。口说无凭,幸运的是,有人花了大量时间来测量PHP的性能,Kinsta提供了一个很好的更新列表。


  从7.0版本以来,PHP性能就只升不降。PHP web应用的性能可以和其他语言web框架的性能相提并论,甚至更高。具体测试情况可查看:


  https://github.com/thebenchmarker/webframeworks


  当然,PHP框架的性能还无法超越C和Rust,但是要比Rails或Django好,且能够和ExpressJS相媲美。


  框架和生态系统


  在谈到框架时,PHP已经不再只是WordPress了。作为职业的PHP开发者,我认为,WordPress无法从任何层面代表当今的生态系统。


  总体来说,有2个主要的web应用框架以及一些相对而言较小的框架,如Symfony和Laravel。除此之后,还有Zend、Yii、Cake、Code Igniter等等。


  如果你想了解现代PHP开发究竟是什么样子,那么就需要掌握Symfony和Laravel中的一个,这2个框架都有庞大的生态系统,包含各种包和产品。从管理面板和客户关系管理系统(CRM)到单独的包,从持续集成(CI)到性能监视工具,我们有无数的服务如web套接字服务器、队列管理器、支付集成等等。


  但是,这些框架都是为实际开发而设计的。如果你需要纯粹的内容管理,WordPress和CraftCMS是理想选择,而且它们还会不断优化。


  衡量PHP生态系统目前状态的方法是看一看Packagist,它是PHP主要的包仓库。在过去的时间里,它呈现出了指数式增长的态势,每天2500万左右的下载量,足以说明PHP生态系统已经不再是过去那种弱者了。


  Packagist网站上列出了过去的包和版本数量:


  2019年了,PHP已不再是当年那个“设计糟糕”的语言


  除了应用框架和内容管理系统(CMS)以外,我们还发现,在过去几年,异步框架也崛起了。


  异步框架是指用PHP或其它语言编写的框架和服务器,它们能够让用户运行真正异步的PHP。异步框架的例子包括:Swoole、Amp和ReactPHP。


  由于我们已经进入异步领域,具有大量IO的web套接字和应用等东西在PHP世界中就变得非常重要。


  另外,人们还谈到了内部邮件列表,在邮件列表中,PHP核心开发者讨论了PHP语言的进一步发展,例如增加libuv到核心之中。对于不熟悉libuv的人来说,libuv同Node.js用于实现其所有异步性的库一模一样。


  语言本身


  尽管异步(async)和等待(await)还未面市,但PHP在过去几年已经经过了许多改进,下面便是PHP新特性的不完全列表:


  短闭包


  https://stitcher.io/blog/shortclosuresinphp


  空合并运算符


  https://stitcher.io/blog/shorthandcomparisonsinphp#nullcoalescingoperator


  Traits


  https://www.php.net/manual/en/language.oop5.traits.php


  属性类型


  https://stitcher.io/blog/newinphp74#typedpropertiesrfc


  扩散运算符


  https://wiki.php.net/rfc/argument_unpacking


  JIT编译器


  https://wiki.php.net/rfc/jit


  FFI


  https://wiki.php.net/rfc/ffi


  匿名类


  https://www.php.net/manual/en/language.oop5.anonymous.php


  声明返回类型


  https://www.php.net/manual/en/functions.returningvalues.php#functions.returningvalues.typedeclaration


  现代密码学


  https://wiki.php.net/rfc/libsodium


  Generators


  https://wiki.php.net/rfc/generators


  其他


  https://www.php.net/ChangeLog7.php


  尽管我们的主题是PHP的语言特性,但我还是觉得需要谈一下PHP语言的开发流程。虽然社区被允许提出RFC,但仍有一个活跃的志愿者核心团队在推动PHP的发展。在添加一个新的语言特性之前,必须要进行投票。只有获得2/3多数选票的RFC才能被添加到核心中。


  大约有100个人可以投票,但你不需要给每个RFC投票。核心团队的成员毋庸置疑能够投票,因为他们必须维护代码库。除了他们以外,还有一群人是单独从PHP社区中挑选出来的,这些人员包括PHP文件的维护人员,PHP整体项目的贡献者,以及PHP社区中颇具威望的开发者。


  虽然大多数核心开发是由志愿者组成的,但其中一名核心PHP开发者Nikita Popov近期被JetBrains雇佣,并全职负责该语言的开发。另外一个例子是Linux基金会决定投资Zend框架。上述这些雇佣和收购行为确保了未来PHP开发的稳定性。


  工具


  除了核心本身,我们还目睹了过去几年间工具的增长。首先进入我脑海的是静态分析器如Vimeo发明的Psalm,以及Phan和PHPStan。


  这些工具能够静态分析PHP代码,并且报告打字错误、可能的bug等等。在某些方面,它们提供的功能足以和TypeScript相媲美,但目前PHP还没有被转编译(transpile),因此它并不支持定制句法。


  虽然这意味着我们必须依赖于文档块,但PHP的最初发明者Rasmus Lerdorf提出了将静态分析引擎添加到核心之中的想法。这个想法潜力巨大,但任务量着实不小。


  提到转编译,由于受到JavaScript社区的启发,有许多人试图将PHP句法延伸到用户空间中。一个名叫Pre的项目就做了这件事情:它支持新的已经转编译为普通PHP代码的PHP句法。


  虽然这一想法已经在JavaScript中得以实现,但只有在提供了适当的集成开发环境(IDE)和静态分析支持后,它才能在PHP工作。这一想法非常有趣,但还必须不断完善,才能变成“主流”。


  结束语


  尽管PHP还有很多缺点和遗留问题,但我可以充满信心地说,我喜欢使用它。就我的经验来看,它可以创建可靠、可维护和高质量的软件。如果使用得当,PHP对于web开发来说是个非常棒的选择。



网站开发排行
标签列表
网站分类
文章归档
最近发表