PHP8.1の新機能紹介 Final class constants

これも地味にありがたい系の追加仕様。
constにfinal宣言ができるようになり、継承先のクラスでオーバーライドできないようになった。

むりやり下記のようにoverrideするとFatal errorがでるようになった。

<?php

class Base
{
    final public const URL = "https://www.google.com/";
}

class Child extends Base
{
    public const URL = "https://www.google.co.jp/"; // Fatal error
}


このエラーは下記のように-l オプションでlinterにかけるだけでも検出できるのもありがたい。

$ php -l final_const.php
Fatal error: Child::URL cannot override final constant Base::URL in final_const.php on line 8
Errors parsing final_const.php

なおプロパティはfinal宣言できない模様。

参考: https://www.php.net/manual/en/language.oop5.final.php#language.oop5.final.example.php81

カテゴリー: php

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です