登録日:
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 を適用する ことを考えていたのかもしれません。