99久久国产露脸精品麻豆,欧美日韩精品小说,亚洲免费在线美女视频,国产三级中文字幕,91极品国产情侣高潮对白,国产亚洲一区二区三区不卡片,欧美jizz精品欧美性,久久国产精品久久国产片

PHP8 新特性總結(二)

袁志蒙 3532次瀏覽

摘要:PHP8中不但新增了許多新特性,還新增了很多方法及系統優化,例如新的Mixed偽類型、新增的三個字符串函數:str_contains、str_starts_with、str_ends_with...

上一篇文章中,我們總結了PHP8中的一部分新特性,這篇中主要總結PHP8新增的方法及系統優化。

1.新的Mixed偽類型

function show(mixed $name){
	var_dump($name);
}
show(true);

mixed等效于所有類型的聯合類型

string|int|float|bool|null|array|object|callable|resource


2.新增的三個字符串函數

str_contains

str_contains檢查另一個字符串中是否包含一個字符串,并返回一個布爾值(true/ false)是否找到該字符串

以往檢查字符串是否包含在另一個字符串中的典型方法通常是使用函數strpos或strstr。

str_contains("abc", "a"); // true
str_contains("abc", "d"); // false
 
// 空字符串是,都是返回true
str_contains("abc", "");  // true
str_contains("", "");     // true

str_starts_with

str_starts_with檢查一個字符串是否以另一個字符串開頭并是否返回布爾值(true/ false)。

str_ends_with

str_ends_with檢查一個字符串是否以另一個字符串結尾,是否返回布爾值(true/ false)。

$str = "beginningMiddleEnd";
var_dump (str_starts_with($str, "beg")) ; //true
var_dump (str_starts_with($str, "Beg")); //false
var_dump (str_ends_with($str, "End")) ;//true
var_dump (str_ends_with($str, "end"));//false
 
// 空字符串:任何字符串以空字符串去檢查都是true
var_dump (str_starts_with("a", "")) ;//true
var_dump (str_starts_with("", "")) ;//true
var_dump (str_starts_with("", "a"));//false
var_dump (str_ends_with("a", "")) ;//true
var_dump (str_ends_with("", "")) ;//true
var_dump (str_ends_with("", "a"));//false


3.新增Static類方法的返回類型

class Foo {
    public static function getInstance(): static {
        return new static();
    }
}


4.可選參數之后禁止出現必選參數

//這里在PHP8中會報錯
function show($age=18,$name){
	echo "$name,$age";
}

show(25, 'yzmcms');


5.繼承規則不適用于Private類方法

class Foo {
    final private function testFoo(){}
}

以上代碼在PHP8中會報錯,私有方法不能是final,因為它們從不被其他類重寫。


6.非靜態方法不允許以靜態方式來調用

class Person{

	public function show(){
		echo 123;
	}
}

Person::show();

以上代碼在PHP7中這么寫只是會報一個Deprecated錯誤,但也會正常執行,而在PHP8中將會報Fatal error


7.字符串和數字比較調整

在php8中,數字和字符串比較時,會將數字轉成字符串,正好和之前相反。

//php7
0 == 'foobar' // true

//php8
0 == 'foobar' // false


8.@運算符不再使致命錯誤不提醒

此更改可能會使 PHP 8 之前的版本被 @ 隱藏的錯誤再次顯示出來。請確保在生產服務器上設置了 display_errors=Off !


9.重新分類的引擎警告

許多以前僅觸發警告或通知的錯誤已轉換為適當的錯誤。以下警告已更改:

變量未定義:Error 異常代替通知

數組索引未定義:警告代替通知

除以零:DivisionByZeroError 異常代替警告

嘗試添加 / 移除非對象的屬性 '% s' :Error 異常代替警告

嘗試修改非對象的屬性 '% s' :Error 異常代替警告

嘗試分配非對象的屬性 '% s' :Error 異常代替警告

從空值創建默認對象:Error 異常代替警告

嘗試獲取非對象的屬性 '% s' :警告代替通知

未定義的屬性:% s::$% s:警告代替通知

無法添加元素到數組,因為下一個元素已被占用:Error 異常代替警告

無法在非數組變量中銷毀偏移量:Error 異常代替警告

無法將標量值用作數組:Error 異常代替警告

只有數組和 Traversables 可以被解包:TypeError 異常代替警告

為 foreach () 提供了無效的參數:TypeError 異常代替警告

偏移量類型非法:TypeError 異常代替警告

isset 或 empty 中的偏移量類型非法:TypeError 異常代替警告

unset 中的偏移量類型非法:TypeError 異常代替警告

數組到字符串的轉換:警告代替通知

資源 ID#% d 用作偏移量,轉換為整數 (% d):警告代替通知

發生字符串偏移量轉換:警告代替通知

未初始化的字符串偏移量:% d:警告代替通知

無法將空字符串分配給字符串偏移量:Error 異常代替警告

提供的資源不是有效的流資源:TypeError 異常代替警告


隨機內容

表情

共0條評論
  • 這篇文章還沒有收到評論,趕緊來搶沙發吧~