php ReflectionClass :: getMethods不会返回正确数量的方法

时间:2011-09-15 20:35:53

标签: php reflection

也许这是一个错误,我不确定。

为什么我执行此代码时:

<?php

class testReflection implements Serializable {
    public function serialize() {
    }
    public function unserialize($data) {
    }
    public function getData() {
    }
}

class testReflection2 implements arrayaccess {
    public function offsetSet($offset, $value) {
    }
    public function offsetExists($offset) {
    }
    public function offsetUnset($offset) {
    }
    public function offsetGet($offset) {
    }
    public function getData() {
    }
}

$c = new ReflectionClass('testReflection');

foreach ($c->getMethods() as $method) {
  var_dump($method->name);
}
echo '========================';
$c = new ReflectionClass('testReflection2');

foreach ($c->getMethods() as $method) {
  var_dump($method->name);
}

我得到了这个结果:

string(9) "serialize"
string(11) "unserialize"
string(7) "getData"
string(11) "unserialize"
string(9) "serialize"
========================
string(9) "offsetSet"
string(12) "offsetExists"
string(11) "offsetUnset"
string(9) "offsetGet"
string(7) "getData"
string(11) "offsetUnset"
string(9) "offsetSet"
string(9) "offsetGet"
string(12) "offsetExists"

界面中定义的方法出现两次。这是一个错误吗?

1 个答案:

答案 0 :(得分:1)

似乎是一个已知的错误,ReflectionClass :: getMethods在不同的PHP版本上不能很好地工作,请参阅此user comment