Slide 48
Slide 48 text
48
サンプルコード
try {
$reflector = new ReflectionClass($fullyQualified->toCodeString());
}
catch (\ReflectionException $r) {
// クラスではない場合: クラス名も内容も取得できない
// 第一引数がクラス名、第二引数がクラスの内容
return new self('', '');
}
// クラスの場合: クラス名は取得でき、内容はファイルの有無次第
$path = ($reflector->getFileName() === false) ? '' : $reflector->getFileName();
$code = self::readFile($path);
return new self($fullyQualified->toCodeString(), $code);
実装例: https://github.com/hirokinoue/phperkaigi-2024/blob/main/src/Example3/ClassLoader.php