Как получить все методы подкласса? - PullRequest
2 голосов
/ 24 декабря 2011

Я программирую экземпляр объекта для других объектов.Теперь мне нужно проверить экземпляр объекта.

Код, который я использую, верен, но объекты являются дочерними по отношению к другому объекту, поэтому в дальнейшем вернем методы родителей.

Код:

<?php
class MyParentClass
{
    ...

    $objectName = "subClassExample";
    $obj = new $objectName();
    print_r( get_class_methods( $obj ) );

    ...
}
?>

Возвращение:

Array ( [0] => __construct [1] => myMethod )

Подкласс:

<?php
class subClassExample extends parentClass
{

    public function myMethod()
    {
        return null;
    }
}
?>

Мне нужно вернуть:

Array ( [0] => myMethod )

Родительский класс:

<?php
class parentClass
{

    function __construct ()
    {
        return null;
    }
}
?>

Я надеюсь, что смогу помочь, я действительно ценю это.Приветствую!

PS: Извините, мой английский не мой язык, я говорю на испанском и норвежском букмолах.

Ответы [ 2 ]

2 голосов
/ 24 декабря 2011

Вы можете сделать это с помощью Отражения PHP Документы :

class Foo
{
    function foo() {}
}

class Bar extends Foo
{
    function bar() {}
}

function get_class_methodsA($class)
{
    $rc = new ReflectionClass($class);
    $rm = $rc->getMethods(ReflectionMethod::IS_PUBLIC);

    $functions = array();
    foreach($rm as $f)
        $f->class === $class && $functions[] = $f->name;

    return $functions;
}

print_r(get_class_methodsA('Bar'));

Вывод:

Array
(
    [0] => bar
)
0 голосов
/ 11 января 2018

Вы можете сделать эту проверку внутри дочернего или родительского класса, если вам нужны только УНИКАЛЬНЫЕ дочерние методы:

$cm = get_class_methods($this); //Get all child methods
$pm = get_class_methods(get_parent_class($this)); //Get all parent methods
$ad = array_diff($cm, $pm); //Get the diff

Имейте в виду: get_class_methods возвращает все типы методов (открытый, защищенный и т. Д.)

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