【问题标题】:get closure's parameters class type in php在php中获取闭包的参数类类型
【发布时间】:2021-11-02 18:04:48
【问题描述】:

让我们考虑一下这个闭包

$a = function (class_name $var){
  //
};

现在我想在调用 var_dump($a->parameter::class) 之类的函数之前获取 class_name 但它不起作用
那么有什么方法可以访问这个 class_name 吗?

编辑:
这个函数可以接收各种类型的类,所以我想知道类名然后包含它。

【问题讨论】:

  • class_name 是什么类型的提示?那应该代表什么?目前还不清楚您要做什么。
  • @yivi,我编辑了这个问题,我想现在已经清楚了
  • 但是,类型提示class_name 并不真正存在于您的代码中,对吧?如果您要发布伪代码,请在您的问题中说明。

标签: php oop


【解决方案1】:

您可以使用反射,尤其是ReflectionFunction 来访问参数类型:

class Foo {}
$a = function (Foo $var) {
  //
};

$function = new ReflectionFunction($a);
$parameter = $function->getParameters()[0];
$parameterType = $parameter->getType();

echo $parameterType->getName();  // Foo

Demo

【讨论】:

  • 非常感谢。这对我有用,我也可以使用抽象类解决问题。
猜你喜欢
  • 2018-08-19
  • 2014-11-27
  • 1970-01-01
  • 1970-01-01
  • 2019-11-10
  • 2016-12-05
  • 2013-06-14
  • 2021-07-10
  • 2012-06-18
相关资源
最近更新 更多