php7 str split,PHP7.4新特性预览

虽然PHP 7.4还未发布,但是RFC已经确定了该版本的一些新性。这个版本的改动有点多,有很多实用性功能。发布日期可能在2019年12月左右,但尚待确认。让我们看看有那些地方的改动。

短闭包 RFC

属性类型定义 RFC

Null Coalescing Assignment Operator RFC

自定义对象序列化 RFC

弃用左关联三元运算符 RFC

预加载 RFC

外部函数接口 RFC

Reflection for references RFC

mb_str_split RFC

ext-hash 始终开启RFC

¶短闭包

引用更简单的闭包写法,增加了类似Lambda的表达式的写法。

// 7.3之前

array_map(function (User $user) {

return $user->id;

}, $users)

// 现在

array_map(fn(User $user) => $user->id, $users)

在原来的基础加上fn关键字。采用了类型javascript =>写法。

¶属性类型定义

可以指定类属性的类型定义,更加的明确类型。

class A

{

public string $name;

public Foo $foo;

protected ClassName $classType;

private ?ClassName $nullableClassType;

// Types are also legal on static properties

public static iterable $staticProp;

}

这项特性增加,在写大型工程的时候,不必为变量类型返回值来回查看源码,这样对IDE的支持也更好。

¶Null Coalescing Assignment Operator

更短的??操作符写法。

// 7.4之前

$data['date'] = $data['date'] ?? new DateTime();

// 现在

$data['date'] ??= new DateTime();

¶弃用左关联三元运算符

与大多数其他语言不同,PHP中的三元运算符是左关联的而不是右关联的。对于在不同语言之间切换的程序员来说,左关联行为通常没有用,并且令人困惑。此RFC建议弃用并删除三元运算符的左关联性,并且需要显式使用括号。

echo 1 ? 2 : 3 ? 4 : 5; // deprecated 7.4, 7.3 之前这是ok的。

echo (1 ? 2 : 3) ? 4 : 5; // ok

¶自定义对象序列化

添加两个新的序列化魔术方法__serialize,__unserialize主要来解决__wakeup和Serializable带来一些问题。可以通过https://wiki.php.net/rfc/custom_object_serialization来查看对比。

¶预加载

预加载是PHP这期核心的变更,可以带来一些重大的性能改进。

简而言之,如果您使用的所有PHP Web框架,则必须在每次请求时加载和重新编译其文件。预加载允许服务器在启动时在内存中加载PHP文件,并使它们永久可用于所有后续请求。

性能提升当然需要付出代价,如果预加载文件的来源发生变化,则必须重新启动服务器。

¶外部函数接口

外部函数接口,简称FFI,此API允许在纯PHP中加载共享库(.DLL或.so),调用C函数和访问C数据结构,而无需深入了解Zend扩展API,也无需学习第三种“中间”语言。对于PHP,FFI开辟了一种在纯PHP中编写PHP扩展和绑定到C库的方法。。 这是一个复杂的主题。您仍然需要C知识才能正确使用此功能。大家可以阅读该项目来了解https://github.com/dstogov/php-ffi。

¶Reflection for references

像Symfony的varCloner转储程序,这样的库很大程度上依赖于反射API来可靠地转储变量。以前,没有对引用的适当反射支持,导致这些库依赖hack来检测引用。 PHP 7.4添加了ReflectionReference类来解决这个问题。

¶mb_str_split

添加了多字节的字符串分割函数和str_split一样。

print_r(mb_str_split("你好中国", 2));

Array

(

[0] => 你好

[1] => 中国

)

¶ext-hash 默认开启

哈希扩展(ext / hash)始终可用,类似于date,spl和pcre扩展。

以上就是PHP 7.4新特性和函数,如果你需要查看所有的更新,你可以通过官方公开的日志查看。这个版本对性能提升是非常明显的特别预加载的功能。让我们拭目以待吧。官方预计发布日期可能在2019年12月左右。

你可能感兴趣的:(php7,str,split)