有没有办法在 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"

Teh Playground!