PHP 8.1: 前と後

in Vlog

(jp) =

<!–

–>

PHP 8.1 のリリースは数か月以内に行われますが、ここでも私をワクワクさせる多くの機能があります! この投稿では、PHP 8.1 が自分のコードに与える実際の影響を共有したいと思います。

# 列挙型

待望の機能、列挙型が登場します! spatie/enum や myclabs/php-enum を使用する必要がなくなることを楽しみにしています。 これらのパッケージに対する長年の enum サポートに感謝しますが、PHP 8.1 が登場してこれを変更したときに最初に捨てるのはこれらのパッケージです。


class StatusEnum extends Enum

PHP8.0

これに:

enum Status

    case draft;
    case published;
    case archived;

PHP 8.1

# 文字列キーによる配列のアンパック

これは小さなもののように思えるかもしれませんが、何度も気になりました: PHP 8.1 より前では、リスト配列のみをアンパックできました:

$a = [1, 2, 3];
$b = [4, 5, 6];


$new = [...$a, ...$b];

PHP8.0

文字列キーを持つ配列は次のことができません:

$a = ['a' => 1, 'b' => 2, 'c' => 3];
$b = ['d' => 4, 'e' => 5, 'f' => 6];

$new = [...$a, ...$b]; 


$new = array_merge($a, $b); 

PHP8.0

PHP 8.1 の優れた機能の 1 つは、文字列キーを持つ配列もアンパックできるようになったことです。

$a = ['a' => 1, 'b' => 2, 'c' => 3];
$b = ['d' => 4, 'e' => 5, 'f' => 6];


$new = [...$a, ...$b]; 

PHP 8.1

tpyoに気づきましたか? PR を送信して修正することができます。 このブログの最新情報を知りたい場合は、私をフォローしてください。 ツイッター または私のニュースレターを購読してください:

# クラス プロパティ: 初期化子と読み取り専用

もう 1 つの驚くべき新機能は、私が長年苦労してきた生活の質の改善です。関数パラメーターのデフォルト引数です。 のデフォルト状態クラスを設定したいとします。 BlogData 物体。 PHP 8.1 より前では、null 可能にしてコンストラクターで設定する必要がありました。

class BlogData

    public function __construct(
        public string $title,
        public ?BlogState $state = null,
    ) 
        $this->state ??= new Draft();
    

PHP8.0

PHP 8.1ではそれが可能です new 関数定義で直接呼び出します。 これは次のようになります 巨大:

class BlogData

    public function __construct(
        public string $title,
        public BlogState $state = new Draft(),
    ) 
    

PHP 8.1

巨大といえば、私はまだそれを言及しましたか 読み取り専用 プロパティは もの 今?!?

class BlogData

    public function __construct(
        public readonly string $title,
        public readonly BlogState $state = new Draft(),
    ) 
    

PHP 8.1

あ、ちなみに、クローン作成について心配する必要はありません。

# 第一級の呼び出し可能な構文

それだけでは不十分であるかのように、callable からクロージャを作成するクリーンな方法を提供する、ファースト クラスの callable 構文も用意されています。

以前は、次のように記述する必要がありました。

$strlen = Closure::fromCallable('strlen');
$callback = Closure::fromCallable([$object, 'method']);

PHP8.0

PHP 8.1 では、次のことができます。

$strlen = strlen(...);
$callback = $object->method(...);

PHP 8.1


PHP 8.1 にはさらに多くの機能がありますが、これらは私が最も興奮しているものです。 あなたのお気に入りは何ですか? 教えて ツイッター!

//platform.twitter.com/widgets.js

関連記事

前の投稿
鳥の渡り:鳥が冬に南に飛ぶ方法、理由、場所
次の投稿
デラウェア州の鹿シーズン: 準備するために知っておくべきことすべて