|
無名クラス無名クラスは、その場限りの使い捨てのオブジェクトが必要になった場合に便利です。 コンストラクタを使って引数を渡したり、他のクラスを継承したり、 インターフェイスを実装したり、トレイトを使ったりといった、 普通のクラスと同じようなことが可能です。 上の例の出力は以下となります。
object(class@anonymous)#1 (1) {
["Command line code0x104c5b612":"class@anonymous":private]=>
int(10)
}
無名クラスを別のクラス内で作っても、外側のクラスの private や protected なメソッド、 およびプロパティにはアクセスできません。 外側のクラスの protected プロパティやメソッドにアクセスするには、 無名クラスに外側のクラスを継承させます。 外側のクラスの private プロパティを無名クラスで使うには、 コンストラクタでそれを渡す必要があります。 上の例の出力は以下となります。 6 同じ無名クラス宣言から作ったすべてのオブジェクトは、その同じクラスのインスタンスとなります。 上の例の出力は以下となります。 同じクラス
読み取り専用の無名クラス
PHP 8.3.0 以降では、
無名クラスにも 例1 読み取り専用の無名クラスを定義する |