免费A级毛片无码专区网站-成人国产精品视频一区二区-啊 日出水了 用力乖乖在线-国产黑色丝袜在线观看下-天天操美女夜夜操美女-日韩网站在线观看中文字幕-AV高清hd片XXX国产-亚洲av中文字字幕乱码综合-搬开女人下面使劲插视频

2020年php8最新功能介紹 php 8( 四 )


PHP 7.4添加了對弱引用的支持,以此作為保留對對象的引用的一種方式,這種引用不會阻止對象本身被破壞 。
在長時間運行的進(jìn)程中,這將防止內(nèi)存泄漏并提高性能 。:
$map = new WeakMap;
$obj = new stdClass;
$map[$obj] = 42;
var_dump($map);
使用PHP 8,上面的代碼執(zhí)行結(jié)果如下:
object(WeakMap)#1 (1) {
[0]=>
array(2) {
[“key”]=>
object(stdClass)#2 (0) {
}
[“value”]=>
int(42)
}
}
如果取消設(shè)置對象,則鍵會自動從弱Map中刪除:
unset($obj);
var_dump($map);
現(xiàn)在的結(jié)果如下:
object(WeakMap)#1 (0) {
}
參數(shù)列表中的尾部逗號尾隨逗號是附加到不同上下文中的項目列表的逗號 。PHP 7.2在列表語法中引入了結(jié)尾逗號,PHP 7.3在函數(shù)調(diào)用中引入了結(jié)尾逗號 。
PHP 8現(xiàn)在在參數(shù)列表中以函數(shù),方法和閉包形式引入尾部逗號,如以下示例所示:
class Foo {
public function __construct(
string $x,
int $y,
float $z,
) {
// do something
}
}
在對象上允許:: class語法為了獲取類的名稱,可以使用Foo\Bar::class語法 。建議將相同的語法擴展到對象,以便現(xiàn)在可以獲取給定對象的類的名稱,如下例所示:
$object = new stdClass;
var_dump($object::class); // “stdClass”
$object = null;
var_dump($object::class); // TypeError
使用PHP 8,$object::class提供與相同的結(jié)果get_class($object) 。如果$object不是對象,則拋出TypeError異常 。
屬性v2屬性,也稱為注釋,是結(jié)構(gòu)化元數(shù)據(jù)的一種形式,可用于指定對象,元素或文件的屬性 。
在PHP 7.4之前,文檔注釋是將元數(shù)據(jù)添加到類,函數(shù)等的聲明中的唯一方法 。Attributes v2 RFC引入了PHP屬性,這些屬性將它們定義為結(jié)構(gòu)化的語法元數(shù)據(jù)的形式,可以將其添加到類,屬性,函數(shù),方法,參數(shù)和常量 。
將屬性添加到它們所引用的聲明之前 。示例:
<<ExampleAttribute>>
class Foo
{
<<ExampleAttribute>>
public const FOO = ‘foo’;
<<ExampleAttribute>>
public $x;
<<ExampleAttribute>>
public function foo(<<ExampleAttribute>> $bar) { }
}
$object = new <<ExampleAttribute>> class () { };
<<ExampleAttribute>>
function f1() { }
$f2 = <<ExampleAttribute>> function () { };
$f3 = <<ExampleAttribute>> fn () => 1;
可以在文檔塊注釋之前或之后添加屬性:
<<ExampleAttribute>>
/** docblock */
<<AnotherExampleAttribute>>
function foo() {}
每個聲明可以具有一個或多個屬性,并且每個屬性可以具有一個或多個關(guān)聯(lián)值:
<<WithoutArgument>>
<<SingleArgument(0)>>
<<FewArguments(‘Hello’, ‘World’)>>
function foo() {}
新的PHP函數(shù)PHP 8為該語言帶來了幾個新功能,str_contains,str_starts_with(),str_ends_with()和get_debug_type
str_contains在PHP 8之前,strstr和strpos是開發(fā)人員在給定字符串中搜索針的典型選擇 。問題是,這兩個函數(shù)并不是很直觀,它們的用法可能會使新人員感到困惑 。
$mystring = ‘Managed WordPress Hosting’;
$findme = ‘WordPress’;
$pos = strpos($mystring, $findme);
if ($pos !== false) {
echo “The string has been found”;
} else {
echo “String not found”;
}
在上面的示例中,使用了!==比較運算符,該運算符還檢查兩個值是否屬于同一類型 。如果針的位置為0,這可以防止我們出錯:

經(jīng)驗總結(jié)擴展閱讀