私は HHVM でハックを調査しており、ジェネリックを使用しています。次のベース リポジトリがあります。
class BaseRepository<T>{
public function __construct(T $model){
...
}
}
次に、次のようなサブクラス UserRepository があります。
class UserRepository extends BaseRepository<User> {
}
私ができるようにしたいのは、実行時にリフレクションを使用して T の型を取得することです。
私は次のことを試しました:
$reflectionClass = new ReflectionClass('UserRepository');
$parameters = $reflectionClass->getConstructor()->getParameters();
var_dump($parameters);
次を出力します。
array(1) {
[0]=>
object(ReflectionParameter)#854 (2) {
["info"]=>
array(9) {
["index"]=>
int(0)
["name"]=>
string(5) "model"
["type"]=>
string(0) ""
["type_hint"]=>
string(1) "T"
["function"]=>
string(11) "__construct"
["class"]=>
string(36) "BaseRepository"
["nullable"]=>
bool(true)
["attributes"]=>
array(0) {
}
["is_optional"]=>
bool(false)
}
["name"]=>
string(5) "model"
}
}
次に、パラメーターを繰り返し処理して呼び出します: $parameter->getClass()
null を返します。
リフレクションを使用して実行時に T の型を取得することは可能ですか? もしそうなら、どうすればいいですか?