Как получить имя класса из статического дочернего метода - PullRequest
5 голосов
/ 29 июня 2011
<?php
class MyParent {

    public static function tellSomething() {
        return __CLASS__;
    }
}

class MyChild extends MyParent {

}

echo MyChild::tellSomething();

Код выше выдает «MyParent». Как я могу получить имя дочернего класса - в данном случае «MyChild»? Если это возможно ...

Мне просто нужно знать, какой ребенок вызывает унаследованный метод.

Ответы [ 2 ]

7 голосов
/ 29 июня 2011

__CLASS__ - псевдо-константа, которая всегда относится к классу, в котором она определена.С late-static-binding была введена функция get_called_class(), которая разрешает имя класса во время выполнения.

class MyParent {

  public static function tellSomething() {
    return get_called_class();
  }
}

class MyChild extends MyParent {

}

echo MyChild::tellSomething();

(как примечание: обычно методы ненужно знать класс, где они называются)

5 голосов
/ 29 июня 2011

То, что вы описываете, называется Поздние статические привязки , и оно стало доступно в PHP 5.3.

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