【PHP】7.4リリース

  • 2019年11月29日
  • PHP

 PHP7.4がリリースされました。警告回りが強化され色々あるようですが、目先で気になるのは新規機能です。
PHP: Migrating from PHP 7.3.x to PHP 7.4.x – Manual
 気になった使い勝手の良さそうな機能は以下です。実コードとコメントで紹介します。

/**
 * JavasScript的な関数の作り方. ワンライナーでここまでできる
 * @see https://www.php.net/manual/ja/migration74.new-features.php#migration74.new-features.core.arrow-functions
 */
Route::get('/', fn() => view('welcome'));

class Hoge {
    /**
     * プロパティに型を付けられるようになりました。
     * @see https://www.php.net/manual/ja/migration74.new-features.php#migration74.new-features.core.typed-properties
     */
    public int $b = 42;
}
Route::get('/tp', static function (){
    $hoge = new Hoge();
    $hoge->b = '13'; // NOT ERROR. '13' に暗黙の型変換が働いて 13 になります
    echo $hoge->b;
    $hoge->b = 'hgoegheo'; // ERROR. 型が変換できないものを代入できません
});
Route::get('ncao', static function () {
    /**
     * @see https://www.php.net/manual/ja/migration74.new-features.php#migration74.new-features.core.null-coalescing-assignment-operator
     * ??= は左辺がnullか未定義ならば代入を行う演算子です.
     * デフォルト値的に使うことが多そうです.
     * $a ??= 'default_value'; と
     * $a = $a ?? 'default_value'; と
     * if(! isset($a)){
     *     $a = 'default_value';
     * }
     * は等価です.
     */
    $a = [
        'abc' => 'xyz',
        'def' => null,
    ];
    $a['abc'] ??= 'hoge';
    $a['def'] ??= 'fuga';
    $a['ghi'] ??= 'foobar';
   dump($a);
   /*
    [
        "abc" => "xyz"
        "def" => "fuga"
        "ghi" => "foobar"
    ]
    */
});
/**
 * 区切り文字を入れた数字表現が追加されました
 * @see https://www.php.net/manual/ja/migration74.new-features.php#migration74.new-features.core.numeric-literal-separator
 */
Route::get('nls', fn() => dump(299_792_458 === 299792458)); // true
/**
 * 可変引数的な展開が配列でもできるようになりました
 * @see https://www.php.net/manual/ja/migration74.new-features.php#migration74.new-features.core.unpack-inside-array
 */
Route::get('uia', static function () {
    $parts = ['apple', 'pear'];
    $fruits = ['banana', 'orange', ...$parts, 'watermelon'];
    dump($fruits); // ['banana', 'orange', 'apple', 'pear', 'watermelon']
});

 新規機能外でうれしく思うのは、ネストされた括弧なし三項演算子の非推奨化、です。PHPの三項演算子は他言語と比べてマイナーな処理順のため括弧抜きではいちいち確かめが面倒でした。

>株式会社シーポイントラボ

株式会社シーポイントラボ

TEL:053-543-9889
営業時間:9:00~18:00(月〜金)
住所:〒432-8003
   静岡県浜松市中央区和地山3-1-7
   浜松イノベーションキューブ 315
※ご来社の際はインターホンで「316」をお呼びください

CTR IMG