PHP8 改进挺大的. 还能这样写代码.

use function demo\strlen;

直接可以重写原生函数, 这样就可以更好的注入或者增加功能, 比如某些函数避免它报错, 或者别名利用.

var_dump(value: 'str');
error_reporting(error_level: 1);

类型参数命名, 这让写代码更具观赏性, 更不容易乱了.

array_column(column_key: 1,array: []);
base64_decode(strict: true, string: 'string');

参数命名后, 参数顺序开始可以随意了,

这样也给各大框架增加了工作难度, 基本上全部要重建.

use
核心优势, php
讨论数量: 10
  • array_columnuse function 支持于 5.6
  • Named Arguments 支持于 8.0
3个月前 评论
yyy123456 3个月前
Jyunwaa

没活儿咬个打火机

3个月前 评论
一念沧海一念桑田 1个月前
老年人 1个月前

这玩意太鸡肋了把,甚至还有负面影响,代码可读性都变差

3个月前 评论
tuesdays (楼主) 3个月前

命名参数的更多应用场景其实是在默认参数比较多的函数(方法)上,不过一般来说不推荐编写超过 3 个参数的方法,改而定义单独的类来处理比较合适(因为参数多了,大概率就说明这个函数内部会变得比较复杂了。)

use function 这个其实,如果你真想调用原始方法,直接在方法名前面加个反斜线,就行 \strlen('Hi'),就会调用系统的了,而且如果你十分确定你要调用的就是系统函数,这样的还会比不加反斜线快一丢丢。

要覆写系统函数还是挺麻烦的,有些扩展带来的函数倒是可以停用扩展后写,而有些内建的就不行了,只有利用一些扩展来实现,比如 runkit.


其实 PHP 8.x 有用的改动也挺多的,除了上面的命名参数,比如:枚举、构造函数属性提升、First class callable syntax、注解、更强大的类型(交叉、联合)、match 表达式、Nullsafe 运算符、新的初始化器(默认参数)、数组解包的升级、析取范式 (DNF)、常量的升级(trait、接口可用)、属性钩子、属性的非对称可见性、ext-dom 的 HTML5 升级、BCMATH 的对象化升级、new MyClass()->method() 不需要括号 等。

2个月前 评论
tuesdays (楼主) 2个月前
Rache1 (作者) 2个月前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!