我偶然发现了这个页面,它讨论了PHP5附带的非常方便的新反射类,并返回了类的所有方法和属性:
print_r to get object methods in PHP?
接下来,有没有办法确定它返回的方法的允许值?
答案 0 :(得分:1)
对于某些类中的某些方法,您的意思是确定允许的返回值类型和返回值范围?我想,非常非常难熬。毕竟,没有办法在PHP中定义或提示返回值。所以我可以做到以下几点:
class .... {
function myFunction()
{
... some code ....
if (condition) return "A";
.... more code .....
if (condition2) return 2;
.... more code ....
if (condition3) return $_POST["number"];
}
}
这当然是一个完全搞砸的例子,但你明白我的观点。返回值的可能类型非常难以预测,因为我可以在任何时候返回任何内容。
我认为最好的办法是在文档块中解决这个问题。如果你遵循phpDoc表示法:
/**
* @desc Searches for a record.
* @return int the number of found records.
*/
function myMethod()
{ ....
当您键入对方法的调用时,许多IDE至少能够提供有关预期返回类型的提示。
答案 1 :(得分:0)
嗯,这取决于你所说的“允许值”。如果它在doc-block中可用,你可以用Reflection找到它...找到返回值:
class foo {
/**
* @returns boolean When false
*/
public function bar($x, $y = 'bar') {
}
}
$reflector = new ReflectionMethod('foo', 'bar');
$comment = $reflector->getDocComment();
if (preg_match('#@returns (\\S+)#', $comment, $match)) {
echo "Method returns: ".$match[1];
}
产生
Method Returns: boolean
然后,您只需要从该doc评论中解析出您想要的内容......注意它可以是类型或类(或多个分组,boolean|null|string|DOMNode
)...