php:получаем имя наследующего класса в статическом методе

StackOverflow https://stackoverflow.com/questions/2302377

Вопрос

Ладно, название поста может немного сбить с толку.

У меня есть этот код:

class A {
    public static foo() {
        return get_called_class();
    }
}

class B extends A {

}

class C {
    public function bar() {
        echo B::foo();
    }
}

Выходной сигнал:C

То, что я хочу получить в foo(), - это имя класса B.Как я могу это сделать без изменений в классе B?

С уважением, Ян Оливер

PS:__ CLASS __, get_class() не работают.

Это было полезно?

Решение

До PHP 5.3 это было невозможно без взломов и известно как позднее статическое связывание, термин, доступный для поиска в Google.

Если вам интересно, вот статья SO с ответами: Подделка поздней статической привязки перед php 5.3

Другие советы

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top