尽管已经目前PHP语言已经建立起属于自己的软件文化,但要找到它令人抓狂的弊端也绝对不是难事。我们曾经在之前的文章中列出过该语言最让开发人员难以接受的十二大糟糕特性。
不过在过去几年当中,PHP已经发生了一系列变动——从语言本身到相关生态系统再到对开发者社区的支持——这些确实值得我们加以关注。尽管已经抛弃了PHP并投身于Python或者Ruby的用户们不太可能在短时间内被吸引回来,但已经有迹象表明确实有人在不遗余力地对PHP加以完善。下面我们就一同来了解PHP语言迎来的四大显著改进。
1. 软件包与依赖性管理
直到不久之前,对PHP软件包进行管理的惟一方式还只能是使用PEAR(即PHP扩展与应用程序库)。不过PEAR在使用难度上长期受到开发人员们的抨击,其中充斥着大量已经过时以及未受维护的软件组件。大多数更为流行的PHP框架都拥有自己的独特软件包管理系统——例如CakePHP的Bakery、CodeIgniter的Sparks等——不过它们很少或者几乎无法将PHP作为整体加以打理。
这方面最大的变化源自Composer,它吸取到了Node.js的NPM系统与Ruby的Bundler当中的优秀要素。它会以项目作为基础对软件包进行追踪,这样一来开发人员就能更轻松地弄清楚特定项目需要使用哪些软件包并以自动化方式对其加以安装。它与名为Packagist的库协同运作,该库中已经包含大量常用PHP应用、框架以及组件。
2. Hack/HHVM
PHP获得的另外两大最为显著的变化源自PHP自身体系之外——更准确地说,来自Facebook:Hack语言与HHVM(即HipHop虚拟机)。前者在继承了PHP衣钵的同时添加了一系列PHP默认状态下无法实现的功能,例如静态对象类型。后者则能够将PHP代码编译为C++代码从而加快其执行速度,最终带来将近十倍于原本的性能水平。二者都属于推出时间相对较短的创新成果,因此它们对于PHP在长远角度的影响仍然有待观察。不过它们至少显示出主流Web服务巨头确实对PHP显示出浓厚的兴趣与认真的对待态度,并因此将其作为自身选定的平台方案。
3. PHP-FIG
虽然听起来像是种解闷的小零食(Fig意为无花果),但这实际上是一个PHP框架程序组,其中汇总了PHP开发者们所打造的用于构建开发标准(包括如何以一致性方式开发自己的项目)的技术成果。来自CakePHP、Drupal、Joomla以及SugarCRM等项目的技术人员们已经正式加入该团体,并为多项日常工作提供了标准化机制——其中包括编码风格指南、库登录接口以及如何处理类的自动载入等等。
这个小组可以说是完全自愿加入而且并非正式机构,不过他们希望“随着时间的推移,其涵盖范围能够扩展到更为广泛的项目区划当中。”
4. Phpng项目
为PHP语言本体开发换代版本则是另一个为该语言带来全面提升的优秀思路。这个被称为Phpng的PHP开发分支当中包含诸多改进,旨在明确特定操作需要使用多少内存容量以及完成特定运行效果需要使用多少条机器指令。其中大部分工作都受到PHP供应商Zend技术公司的赞助,后者的PHP引擎被广泛用于该语言的商用安装方案当中。
当然,其中大部分改进仅仅是为了提升其性能表现而并非改变PHP语言那备受讥讽的语法特性——遗憾的是,这些问题目前仍没有得到解决的迹象。也许PHP的下一次重大革新不会像Hack那样具备颠覆性效果,而更像是JavaScript扩展方案那种能够实现原生编译效果的转译语言。
英文:http://www.infoworld.com/t/php-web/4-ways-php-coding-getting-less-painful-245435

PHP和Python各有优势,选择应基于项目需求。1.PHP适合web开发,语法简单,执行效率高。2.Python适用于数据科学和机器学习,语法简洁,库丰富。

PHP不是在消亡,而是在不断适应和进化。1)PHP从1994年起经历多次版本迭代,适应新技术趋势。2)目前广泛应用于电子商务、内容管理系统等领域。3)PHP8引入JIT编译器等功能,提升性能和现代化。4)使用OPcache和遵循PSR-12标准可优化性能和代码质量。

PHP的未来将通过适应新技术趋势和引入创新特性来实现:1)适应云计算、容器化和微服务架构,支持Docker和Kubernetes;2)引入JIT编译器和枚举类型,提升性能和数据处理效率;3)持续优化性能和推广最佳实践。

在PHP中,trait适用于需要方法复用但不适合使用继承的情况。1)trait允许在类中复用方法,避免多重继承复杂性。2)使用trait时需注意方法冲突,可通过insteadof和as关键字解决。3)应避免过度使用trait,保持其单一职责,以优化性能和提高代码可维护性。

依赖注入容器(DIC)是一种管理和提供对象依赖关系的工具,用于PHP项目中。DIC的主要好处包括:1.解耦,使组件独立,代码易维护和测试;2.灵活性,易替换或修改依赖关系;3.可测试性,方便注入mock对象进行单元测试。

SplFixedArray在PHP中是一种固定大小的数组,适用于需要高性能和低内存使用量的场景。1)它在创建时需指定大小,避免动态调整带来的开销。2)基于C语言数组,直接操作内存,访问速度快。3)适合大规模数据处理和内存敏感环境,但需谨慎使用,因其大小固定。

PHP通过$\_FILES变量处理文件上传,确保安全性的方法包括:1.检查上传错误,2.验证文件类型和大小,3.防止文件覆盖,4.移动文件到永久存储位置。

JavaScript中处理空值可以使用NullCoalescingOperator(??)和NullCoalescingAssignmentOperator(??=)。1.??返回第一个非null或非undefined的操作数。2.??=将变量赋值为右操作数的值,但前提是该变量为null或undefined。这些操作符简化了代码逻辑,提高了可读性和性能。


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

适用于 Eclipse 的 SAP NetWeaver 服务器适配器
将Eclipse与SAP NetWeaver应用服务器集成。

MinGW - 适用于 Windows 的极简 GNU
这个项目正在迁移到osdn.net/projects/mingw的过程中,你可以继续在那里关注我们。MinGW:GNU编译器集合(GCC)的本地Windows移植版本,可自由分发的导入库和用于构建本地Windows应用程序的头文件;包括对MSVC运行时的扩展,以支持C99功能。MinGW的所有软件都可以在64位Windows平台上运行。

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

VSCode Windows 64位 下载
微软推出的免费、功能强大的一款IDE编辑器

SublimeText3 英文版
推荐:为Win版本,支持代码提示!