Как вы перечисляете дочерние методы класса из родительского класса в PHP без статики? - PullRequest
0 голосов
/ 25 октября 2018

Предполагая структуру класса, подобную этой:

class A {
    function __construct() {
        $methods_get_class = get_class_methods(get_class());
        $methods_get_called_class = get_class_methods(get_called_class());

        // The same methods are often the same
        // So you may not be able to get the list
        // of the methods that are only in the child class
    }
}

Class B extends A {
    function __construct() {
        parent::__construct();
    }
}

Как бы вы перечислили методы, которые есть только в дочернем классе, а не в родительском классе?

1 Ответ

0 голосов
/ 25 октября 2018

Один из способов сделать это - через ReflectionClass.

$child_class_name = get_called_class();
$child_methods    = (new ReflectionClass($child_class_name))->getMethods();
$child_only_methods = [];
foreach($child_methods as $object){
    // This step allows the code to identify only the child methods
    if($object->class == $child_class_name){
        $child_only_methods[] = $object->name;
    }
}

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

Тем не менее, оно создает накладные расходы, но решает техническую проблему, описанную выше.

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