PHP method_exists不适用于类子类?

时间:2011-04-18 08:18:57

标签: php

class parent{
   function run($methodname) {
      echo method_exists(__CLASS__, $methodname);      
   }
}

class child extends parent {
   function order(){
      echo 'hello';
   }
}

$test = new child();
$test->run('order'); //false

method_exists无法在子类中找到方法顺序。

如何让它发挥作用?

3 个答案:

答案 0 :(得分:7)

__CLASS__绑定到它所使用的类,而不是继承类。您可以使用$this作为对象参考来解决此问题。

另见http://www.php.net/manual/en/language.oop5.late-static-bindings.php

答案 1 :(得分:5)

尝试

echo method_exists($this, $methodname); 

答案 2 :(得分:1)

我使用Reflection Class来获取课程详情。希望它有所帮助

function ownMethodExist($class, $method)
{    
    $className = get_class($class);
    $reflection = new ReflectionClass($className);
    if($reflection->getMethod($method)->class == $className) {
        return true;
    }

    return false;
}