クラスプロパティの型指定
PHP7.4から、クラスのプロパティ(メンバ変数)のデータ型を指定できるようになっている。
環境: PHP 7.4.2
型指定
プロパティの型指定は下記のようにアクセス修飾子(下記ではpublic)と変数名の間に指定する。
(voidとcallable以外の型を指定可)
<?php
namespace app\src;
class Member
{
public int $id;
public string $name;
public bool $isEnrolled;
}
厳密な型チェック
厳密な型チェックを行う場合はタイプヒンティングの場合と同様、 declare(strict_types=1) を宣言する必要がある。
宣言がない場合は暗黙的にキャスト(型変換)され、例外を発生しない。
(実行)
<?php
declare(strict_types=1);
require_once __DIR__ . '/app/vendor/autoload.php';
$member = new app\src\Member();
$member->id = "1";
プロパティの型指定による、TypeError
Fatal error: Uncaught TypeError: Typed property app\src\Member::$id must be int, string used in