有没有办法在 php 中找到函数的参数类型列表?
Is there any way to find argument type list of a function in php?
例如,看看这个 php 代码:
class AuthController extends Controller {
public function store(LoginRequest $request, int $id) {
// code...
}
}
我想获取方法 AuthController::store()
的参数类型列表。
例如,这样做:
print_r(get_arg_types('AuthController::store'));
应该return:
Array (
[0] => LoginRequest
[1] => int
)
现在,这个 get_arg_types()
还不存在,但我想创建并使用它。有办法吗?
是的,您正在寻找的东西叫做 Reflection,并且 php 具有执行此类操作的全部功能。
这很可能会让您上路:ReflectionMethod。
这是 some more generic background info.
先反映class,再反映方法,再反映parameters。
<?php
class Controller {}
class AuthController extends Controller {
public function store(LoginRequest $request, int $id) {
// code...
}
}
$ref = new ReflectionClass('AuthController');
$methods = $ref->getMethods();
$params = $methods[0]->getParameters();
foreach ($params as $param)
var_dump($param->getType()->getName());
输出
string(12) "LoginRequest"
string(3) "int"
例如,看看这个 php 代码:
class AuthController extends Controller {
public function store(LoginRequest $request, int $id) {
// code...
}
}
我想获取方法 AuthController::store()
的参数类型列表。
例如,这样做:
print_r(get_arg_types('AuthController::store'));
应该return:
Array (
[0] => LoginRequest
[1] => int
)
现在,这个 get_arg_types()
还不存在,但我想创建并使用它。有办法吗?
是的,您正在寻找的东西叫做 Reflection,并且 php 具有执行此类操作的全部功能。
这很可能会让您上路:ReflectionMethod。 这是 some more generic background info.
先反映class,再反映方法,再反映parameters。
<?php
class Controller {}
class AuthController extends Controller {
public function store(LoginRequest $request, int $id) {
// code...
}
}
$ref = new ReflectionClass('AuthController');
$methods = $ref->getMethods();
$params = $methods[0]->getParameters();
foreach ($params as $param)
var_dump($param->getType()->getName());
输出
string(12) "LoginRequest" string(3) "int"