您好我尝试了很多东西来捕获参数函数的命名空间,但没有。
public function table(Homes $homes) { // <---------- Homes
return $homes->get('home');
}
我尝试使用ReflectionClass,但只给我一个名字$ homes而不是Homes命名空间。
答案 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)。