PHPで「型宣言された引数の型の名前」を知る方法 - がるの健忘録 の続編。
いやPHP8になって「union typesとか増えたしなぁ」とか思って検証コード書いてみたので、勿体ないんで、忘れる前に(絶対忘れるだろうしw)、記録しておく。
<?php
namespace Foo;
//
class Bar {
}
// 調査用クラス
class Hoge {
public function t(\Exception $e, Bar $ar, $s, int|float $i, mixed $m) {
}
}
/*
//
$ref = new \ReflectionMethod('Hoge', 't');
//
$params = $ref->getParameters();
//
foreach($params as $p) {
echo $p->getType() , "\n";
}
*/
// 一行にまとめてみるとこんなん
foreach(( new \ReflectionMethod('Foo\\Hoge', 't'))->getParameters() as $p) {
echo $p->getType() , "\n";
}結果
Exception
Foo\Barint|float
mixed
ほむ、概ね「すげぇ素直」にかえってくるんだ。
クラスは流石に完全修飾クラス名だけど。