PHP如何获取类方法参数的命名空间?

时间:2017-04-26 09:21:02

标签: php parameters namespaces

您好我尝试了很多东西来捕获参数函数的命名空间,但没有。

public function table(Homes $homes) { // <---------- Homes
    return $homes->get('home');
}

我尝试使用ReflectionClass,但只给我一个名字$ homes而不是Homes命名空间。

2 个答案:

答案 0 :(得分:1)

有可能:

$method         = new ReflectionMethod('classDeclaringMethodTable', 'table');

// ReflectionMethod::getParameters() returns an *array*
// of ReflectionParameter instances; get the first one
$parameter      = $declaringMethod->getParameters()[0];

// Get a ReflectionClass instance for the parameter hint
$parameterClass = $parameter->getClass();

然后在这一点上,它取决于你想要的......

// Returns ONLY the namespace under which class Homes was declared
$parameterClass->getNamespaceName();

// Returns the fully qualified class name of Homes
// (i.e. namespace + original name; it may've been aliased)
$parameterClass->getName();

我使用了多个变量来让它更容易理解,但它很容易成为一个带方法链的单行。

答案 1 :(得分:0)

如果我理解正确,你需要获得带有命名空间的类名... 在PHP中,名称空间是类名的一部分。还有简单的内置函数 get_class($ object)