Можно ли как-нибудь "обмануть" ReflectionClass?

FB3

Новичок
Можно ли как-нибудь "обмануть" ReflectionClass?

Имеется библиотека AMFPHP.

Для того, чтобы определить, какие методы имеются у классов-сервисов, с которыми ей предстоит работать, она использует ReflectionClass.

Копался в документации PHP, но не нашел, можно ли как-нибудь переопределить список методов, возвращаемых ReflectionClass::getMethods().

Нужно это для того, чтобы реализовать делегирование функциональности другому классу с помощью метода __call в классе-сервисе, к которому обращается AMFPHP, а функциональность, которая одинакова для всех методов, чтобы осталась в делегирующем классе в методе __call.

Пробовал расписать на примере, чего же я хочу в итоге, но че-то муть какая-то получается :)
 

weregod

unserializer
Re: Можно ли как-нибудь "обмануть" ReflectionClass?

PHP:
class MyReflectionClass extends ReflectionClass
{
    /**
     * @param  mixed $filter  int | null
     * @return array
     */
    public function getMethods($filter = null)
    {
        $methods = is_null($filter) ? parent::getMethods() : parent::getMethods($filter);
        // do something
        return $methods;
    }
}

$reflector = new MyReflectionClass('MyReflectionClass');

var_dump($reflector->getMethods());
и заменить в либе ReflectionClass на MyReflectionClass или я чото пэ?
 

FB3

Новичок
Хотелось без этого, но может быть и похожий вариант сделаю.
То есть библиотеку саму не очень хочется крутить/менять.

Просто думал, что может быть можно как-то написать в самом классе, чтобы Reflection брал методы не из кода класса, а к примеру из переменной или из специального PHPDoc. То есть явно определить их как-то. Странно, почему я это не догадался написать в первом посте :)
Хотя, с другой стороны, наверное, это бредовая идея. Потому что Reflection же не только получает инфу о классах, но и может менять их на лету, поэтому было бы бредово брать какую-то левую инфу, которая не гарантирует, что на самом деле такие методы и свойства существуют.
 

FB3

Новичок
Ужо давно все понял, не стоило так напрягаться :)
 
Сверху