役立つ情報
登録日: 2025-02-08   最終更新日: 2025-03-07

php public readonly fucntion () について

public readonly function () について説明します。

readonly 修飾子とは?

PHP 8.1 で readonly プロパティが導入され、PHP 8.2 では readonly クラスも導入されました。 しかし、関数(メソッド)に readonly 修飾子を付けることはできません。

readonly プロパティ

PHP 8.1 以降、readonly プロパティを使用すると、一度だけ値を設定でき、その後は変更できません。


class User {
    public readonly string $name;

    public function __construct(string $name) {
        // コンストラクタ内でのみ設定可能
        $this->name = $name;
    }
}

$user = new User("Alice");

// "Alice"
echo $user->name;

// エラー: Readonly property User::$name cannot be reassigned
$user->name = "Bob";

readonly クラス(PHP 8.2 以降)

PHP 8.2 では、クラス全体を readonly にすることができます。これにより、そのクラスのすべてのプロパティが readonly になります。


readonly class User {
    public string $name;

    public function __construct(string $name) {
        $this->name = $name;
    }
}

readonly は関数(メソッド)には使えない

もし public readonly function () のような構文を使おうとすると、構文エラー になります。 PHP は 関数に対して readonly を適用する機能を提供していません。


class Sample {
    // エラー: Unexpected 'readonly'
    public readonly function test() {
        return "Hello";
    }
}

public readonly function という記述をしたかった意図としては、readonly プロパティを扱うメソッドの定義 や クラスに readonly を適用する ことを考えていたのかもしれません。


Copyright 役立つ情報.net