【PHP8.x】ReflectionGenerator::getThis()メソッドの使い方
getThisメソッドの使い方について、初心者にもわかりやすく解説します。
作成日: 更新日:
基本的な使い方
getThisメソッドは、ReflectionGeneratorクラスに属し、ジェネレータの実行が一時停止している時点での$thisオブジェクトを取得するメソッドです。ジェネレータとは、PHPの特殊な関数で、処理を途中で中断し、後で再開できる機能を持っています。
このメソッドは、調べたいジェネレータが、あるクラスのインスタンスメソッドとして定義され、かつ現在実行が一時停止している場合に、そのインスタンス自身($this)を返します。これにより、ジェネレータがどのオブジェクトのコンテキストで実行されていたかを知ることができます。
もしジェネレータが通常の関数として定義されている場合や、クラスの静的メソッドである場合、または$thisのコンテキストを持たない状況で実行されている場合は、このメソッドはnullを返します。また、ジェネレータがまだ一度も実行されていないか、あるいは既に全ての処理を終えて完了している場合もnullが返されます。
このgetThisメソッドは、特にオブジェクト指向プログラミングにおいて、ジェネレータがどのオブジェクトから呼び出されたかを動的に検査したい場合や、ジェネレータの内部状態をデバッグする際に有用です。
構文(syntax)
1<?php 2class ExampleClass 3{ 4 public string $propertyName = 'Context Object'; 5 6 public function generateValues(): Generator 7 { 8 yield 1; 9 yield 2; 10 } 11} 12 13$instance = new ExampleClass(); 14$generator = $instance->generateValues(); 15$generator->current(); 16 17$reflectionGenerator = new ReflectionGenerator($generator); 18$thisObject = $reflectionGenerator->getThis(); 19?>
引数(parameters)
引数なし
引数はありません
戻り値(return)
?object
このメソッドは、ジェネレータの実行コンテキストにおける $this 変数を表すオブジェクトを返します。ジェネレータがメソッド内で実行されていない場合は、nullを返します。