Принудительный родительский метод для работы со значениями дочернего класса - PullRequest
0 голосов
/ 20 июня 2019

Принимая следующий код:

EXAMPLE_1

class Parent_Class {}

class Child_Class extends Parent_Class {
    public $class_name;

    public function __construct() {
      $this->class_name = get_class();
    }
}

$child_instance = new Child_Class();
echo $child_instance->class_name;

/// output will be : 
/// Child_Class

Однако здесь:

EXAMPLE_2

class Parent_Class {
    public $class_name;

    public function __construct() {
        $this->class_name = get_class();
    }
}

class Child_Class extends Parent_Class {
    public $class_name;

}

$child_instance = new Child_Class();
echo $child_instance->class_name;

/// output will be:
/// Parent_Class

Вопрос: Как я могу добиться вывода из EXAMPLE_1 в EXAMPLE_2, т.е. Как заставить метод родительского конструктора всегда искать имя дочернего класса?

1 Ответ

4 голосов
/ 20 июня 2019

Вы можете использовать get_called_class() вместо get_class():

class Parent_Class
{
    public function __construct()
    {
        $this->class_name = get_called_class();
    }
}

Для получения дополнительной информации: https://php.net/manual/en/function.get-called-class.php

...