“php是世界上最好的語言”,它從未停止前進的步伐! PHP團隊目前已經發布了PHP 8.1.0 RC 5版,而下一個版本將是第六個也是最後一個候選版本 (RC 6),將於近期發布。以下就來跟大家介紹一下在PHP8.1會有哪8個重要的新轉變,先一睹為快吧!
#enum Status { case draft; case published; case archived; public function color(): string { return match($this) { Status::draft => 'grey', Status::published => 'green', Status::archived => 'red', }; } }
class PostData { public function __construct( public readonly string $title, public readonly string $author, public readonly string $body, public readonly DateTimeImmutable $createdAt, public readonly PostState $state, ) {} }
#3、初始化程式中的新內容(New in initializers)#
class PostStateMachine { public function __construct( private State $state = new Draft(), ) { } }5、
陣列解包也支援字串鍵(Array unpacking also supports string keys)$array1 = ["a" => 1];
$array2 = ["b" => 2];
$array = ["a" => 0, ...$array1, ...$array2];
var_dump($array); // ["a" => 1, "b" => 2]
一種可呼叫類別(First class callables)function foo(int $a, int $b) { /* … */ }
$foo = foo(...);
$foo(a: 1, b: 2);
純交集類型(Pure intersection types) function generateSlug(HasTitle&HasId $post) {
return strtolower($post->getTitle()) . $post->getId();
}
新array_is_list功能(The new array_is_list function)$list = ["a", "b", "c"];
array_is_list($list); // true
$notAList = [1 => "a", 2 => "b", 3 => "c"];
array_is_list($notAList); // false
$alsoNotAList = ["a" => "a", "b" => "b", "c" => "c"];
array_is_list($alsoNotAList); // false