(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
# クラス プロパティ: 初期化子と読み取り専用
もう 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