2020年php8最新功能介绍 php 8( 五 )


“此函数可能返回布尔FALSE,但也可能返回非布尔值,其值为FALSE 。[…]使用===运算符测试此函数的返回值 。”
此外,一些框架提供了帮助程序功能来搜索给定字符串内的值(比如Laravel) 。
RFC建议引入一个新功能,该功能允许在字符串内部进行搜索:str_contains 。
str_contains ( string $haystack , string $needle ) : bool
它的用法非常简单 。str_contains检查是否$needle在中找到$haystack并返回true或false相应地返回 。使用str_contains可以使用如下语法:
$mystring = ‘Managed WordPress Hosting’;
$findme = ‘WordPress’;
if (str_contains($mystring, $findme)) {
echo “The string has been found”;
} else {
echo “String not found”;
}
这更易读,更不容易出错 。目前str_contains它区分大小写,但是将来可能会改变 。
str_starts_with()和str_ends_with()除此str_contains功能外,还有两个新功能允许在给定的规则搜索:str_starts_with和str_ends_with 。检查给定字符串是否以另一个字符串开头或结尾:
str_starts_with (string $haystack , string $needle) : bool
str_ends_with (string $haystack , string $needle) : bool
如果$needle大于$haystack,则两个函数都将返回false 。这两个函数都区分大小写:
$str = “WordPress”;
if (str_starts_with($str, “Word”)) echo “Found!”;
if (str_starts_with($str, “word”)) echo “Not found!”;
get_debug_typeget_debug_type是一个新的PHP函数,它返回变量的类型 。新函数的工作方式与gettype函数非常相似,但是get_debug_type返回本机类型名称并解析类名称 。对于语言来说,这是一个很好的改进,gettype()对类型检查没有用 。
RFC提供了两个有用的示例,可以更好地理解新get_debug_type()功能和的区别gettype() 。第一个示例显示gettype了工作方式:
$bar = [1,2,3];
if (!($bar instanceof Foo)) {
throw new TypeError(‘Expected ‘ . Foo::class . ‘, got ‘ . (is_object($bar) ? get_class($bar) : gettype($bar)));
}
在PHP 8中,可以使用get_debug_type,而不是:
if (!($bar instanceof Foo)) {
throw new TypeError(‘Expected ‘ . Foo::class . ‘ got ‘ . get_debug_type($bar));
}
下面显示了get_debug_type和gettype的返回值对比:

2020年php8最新功能介绍 php 8

文章插图
文章插图
总结【2020年php8最新功能介绍 php 8】在本文中,我们介绍了PHP 8发行版中预期的所有关键更改和改进 。其中最值得期待的肯定是JIT编译器,还PHP 8还有很多其他功能 。希望我们能早日运行新的版本,替换到满是bug的PHP 5.2系统

经验总结扩展阅读