Получение имени дочернего класса в PHP

Допустим, я строю базовый класс, который будет расширен классом детей. Таким образом, базовый класс называется Base а дети могут быть Child1 , Child2 и т. Д.

В конструкторе базового класса, как я могу получить значение Child1 / Child2?

Это все использует PHP

Базовый класс никогда не должен зависеть от информации о дочерних классах —

Чтобы ответить на ваш вопрос:

 class base { public function __construct() { print "Class:" . get_class($this) . "\n"; } } class child extends base{ public function __construct() { parent::__construct(); } } $c = new child(); 

Просто для справок в будущем – это может быть достигнуто в статическом контексте с использованием get_called_class (), но это доступно только в PHP> = 5.3

просто вызовите get_class ($ this) – обратите внимание, однако, что метод базового класса не имеет реального бизнеса в изменении его поведения в зависимости от того, какой производный класс использует его. В этом весь смысл получения класса 🙂

Изменить: не знал о get_class , не get_class внимания на это;)

Вы можете попробовать __CLASS__ но он может не работать должным образом.

Обход может состоять в том, чтобы указать имя класса как свойство базового класса.

Изменить: это не работает (я использовал следующий код) construct () {echo __CLASS; }}

 class b extends a {} $b = new b; 

Я бы предложил передать имя $ b как параметр для A, например:

 <?php class a { protected $name; public function __construct() { echo $this->name; } } class b extends a { protected $name = __CLASS__; } $b = new b;