ホームページ  >  記事  >  前進を続けるために、PHP8.1 には 8 つの重要な新しい変更が加えられています。

前進を続けるために、PHP8.1 には 8 つの重要な新しい変更が加えられています。

藏色散人
藏色散人オリジナル
2021-11-10 16:21:014445ブラウズ

「php は世界で最高の言語」、前進は決して止まりません。 PHP チームは現在、PHP 8.1.0 RC 5 バージョンをリリースしており、次のバージョンは 6 番目で最後のリリース候補 (RC 6) となり、近い将来リリースされる予定です。 PHP8.1 の 8 つの重要な新しい変更点を紹介します。まず見てみましょう。

1、列挙型

enum Status
{
    case draft;
    case published;
    case archived;
    
    public function color(): string
    {
        return match($this) 
        {
            Status::draft => 'grey',   
            Status::published => 'green',   
            Status::archived => 'red',   
        };
    }
}

2、読み取り専用プロパティ#

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、イニシャライザの新機能

class PostStateMachine
{
    public function __construct(
        private State $state = new Draft(),
    ) {
    }
}

4、Fibers、別名「緑色の糸」)

$fiber = new Fiber(function (): void {
    $valueAfterResuming = Fiber::suspend('after suspending');
    
    // … 
});
 
$valueAfterSuspending = $fiber->start();
 
$fiber->resume('after resuming');

5、#配列のアンパックは文字列キーもサポートします #

$array1 = ["a" => 1];
$array2 = ["b" => 2];
$array = ["a" => 0, ...$array1, ...$array2];
var_dump($array); // ["a" => 1, "b" => 2]
6、

ファーストクラス呼び出し可能

function foo(int $a, int $b) { /* … */ }
$foo = foo(...);
$foo(a: 1, b: 2);
7、

純粋交差タイプ

function generateSlug(HasTitle&HasId $post) {
    return strtolower($post->getTitle()) . $post->getId();
}
8、

新しい array_is_list 関数(新しい array_is_list 関数)

$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
この記事は翻訳です。元のアドレス: https://stitcher.io/blog/php-81-in-8-code-blocks

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。