Константа, содержащая $ this class name

Есть ли константа в PHP, содержащая имя текущего подкласс? Чтобы я мог написать такую функцию, как:

namespace test\that;

class MyClass extends ClassA {
}

abstract class ClassA {
 public static function getClassName() {
 return __THIS_CLASS__; // like get_class($this); in a none static method
 }
}

В конце концов я бы сделал что-то вроде этого:

namespace test\other;

use test\that\MyClass;

var_dump(MyClass::getClassName()); // --> test\that\MyClass

Возможно ли это?

3 ответа

Вероятно, вы смотрите на get_called_class(); он возвращает имя класса, в который вызывается статический метод.

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

MyClass::getClassName(); // "MyClass"


Как насчет __CLASS__?

Посмотрите на константы: http://www.php.net/manual/en/language.constants.predefined.php


Вы можете использовать метод PHP get_called_class(). Чтобы вернуть имена родительского класса и дочернего класса.

get_called_class()

licensed under cc by-sa 3.0 with attribution.