php ReflectionClass :: getMethods не возвращает правильное количество методов - PullRequest
0 голосов
/ 16 сентября 2011

может быть, это ошибка, я не уверен.

Почему, когда я выполняю этот код:

<?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 Ответ

1 голос
/ 16 сентября 2011

Кажется, это известная ошибка, что ReflectionClass :: getMethods не работает надежно на разных версиях PHP, см. комментарий пользователя .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...