如何正确确定反射方法::getPrototype


How to correct determine ReflectionMethod::getPrototype

完全不清楚如何确定方法是否有原型。

示例

<?php
class MyClass
{
    public function foo()
    {
    }
}
$refl = new ReflectionClass('MyClass');
var_dump($refl->getMethod('foo')->getPrototype());

PHP 5.1.2 - 5.5.5 的输出

致命错误:未捕获的异常"反射异常"与消息 '方法 MyClass::foo 没有原型'...

我想为我的ReflectionMethod包装器实现类似bool ReflectionMethod::hasPrototype( void )的东西。

有什么想法吗?

如果

原型不存在,则getPrototype被记录为抛出,因此将其转换为布尔值很简单:

public function hasPrototype()
{
    try {
        $this->getPrototype();
        return true;
    }
    catch ('ReflectionException $e) {
        return false;
    }
}