- 命名引數
1 <?php 2 function foo($a, $b, $c = 3, $d = 4) { 3 return $a + $b + $c + $d; 4 } 5 //d:40就是命名引數,命名引數可以任意位置傳遞,但不可重複 6 var_dump(foo(...[1, 2], d: 40)); // 46 7 var_dump(foo(...['b' => 2, 'a' => 1], d: 40)); // 46 8 9 var_dump(foo(...[1, 2], b: 20)); // Fatal error。命名引數 $b 覆蓋之前的引數 10 ?>
- 註解:註解功能提供了程式碼中的宣告部分都可以新增結構化、機器可讀的後設資料的能力, 註解的目標可以是類、方法、函式、引數、屬性、類常量。 透過 反射 API 可在執行時獲取註解所定義的後設資料。 因此註解可以成為直接嵌入程式碼的配置式語言。(參考hyperf)
- 構造器屬性提升
1 <?php 2 class Point { 3 public function __construct(protected int $x, protected int $y = 0) { 4 } 5 }
- 聯合型別
1 <?php 2 function x(int|string $param):int|string{ 3 }
- match 表示式: 用於替換if_else語句
<?php $res = match($num){ 1 => "one", 2 => "two", 3,4,5 => "3,4,5", "2" => 2 } $res = match($num){ $num < 0 => "-", $num > 0 => "+" } //在匹配陣列時要陣列順序一致 $res = match($array){ ["type" => 1 "name" => 1] => "s" }
- nullsafe 運算子 “?->”, 如果鏈條上一個失敗了就返回null
1 $count = $user?->order?->count;
- 字串和數字比較更新:數字字串會按照字串比較,非數字字串會把數字轉為字串比較。
//php8 0 == "foo"; 失敗會報錯 //php7 0 == "foo" true
- 列舉類 enum
1 enum color { 2 case red; 3 case green; 4 case x = “x”; 5 } 6 7 print(color::red->name); 8 print(color::red->value); 9 print(color::tryFrom("z"));//有z就返回值,沒有返回null 10 eunm_exists("color") //類是否存在
- 只讀型別 readonly
1 //只讀屬性只能在物件被建立時透過建構函式初始化。一旦設定,它們就不能被更改 2 class Person { 3 public function __construct(private readonly string $name) { 4 } 5 6 public function getName(): string { 7 return $this->name; 8 } 9 } 10 11 $person = new Person("Alice"); 12 echo $person->getName(); // 輸出: Alice
php8新特性
相關文章
- PHP8 新特性實踐PHP
- PHP8 新特性解讀和示例PHP
- PHP8新特性之match表示式PHP
- PHP8的一些新特性之MatchPHP
- 推薦一個學習php8的新特性的文件PHP
- 整理了一份php8新特性詳解pdf文件PHP
- PHP8的一些新特性之 Nullsafe 操作符PHPNull
- PHP8 都有哪些新功能,說說PHP8的新增特性PHP
- PHP8 新特徵PHP特徵
- PHP8的一些新特性之構造方法屬性提升PHP構造方法
- PHP8的一些新特性之聯合型別(Union Types 2.0)PHP型別
- PHP8的一些語法新特性PHP
- PHP8的一些新特性之新增三個實用的字串方法PHP字串
- PHP8引入了一些重大變更,有哪些新特性與效能優化?PHP優化
- 新特性
- Hadoop新特性Hadoop
- React 新特性React
- 新特性介面
- [Serendipity-job]新聲代任務平臺(CJ8)釋出,基於PHP8和Swow開發,支援眾多特性PHP
- IDL 9.1新特性
- .NET 7新特性
- ES 2024 新特性
- Java 8 新特性Java
- Prometheus 2.21.0 新特性Prometheus
- Go 1.13 新特性Go
- Servlet 3.0 新特性Servlet
- MySQL 8.0 新特性MySql
- PHP 7.4 新特性PHP
- Java 17新特性Java
- PostgreSQL 13–新特性SQL
- C++新特性C++
- Java 11新特性Java
- Java 8 新特性Java
- Android 9.0新特性Android
- 玩轉iOS開發:iOS 11 新特性《Layout的新特性》iOS
- C++11新特性(一):語言特性C++
- C++11新特性(三):語言特性C++
- C++11新特性(二):語言特性C++