Gramcoder
@Gramcoder

Как получить свойства класса по умолчанию?

Как можно получить своства класса указанные по умолчанию?

В чем суть.
Есть класс Handler, в нем происходит поиск и запуск нужного класса-команды. В каждом классе-команде есть свойство protected $name, в котором указано название этой команды. Собственно по названию происходит идентификация и запуск. Все классы-команды наследуют один общий класс Command с основными методами. Этих классов-команд множество. И вот возник вопрос, как лучше всего производить такого рода поиск?

class StartCommand extends Command
{
    protected $name = 'start';

    public function handle()
    {
        //
    }
}


Одно из решений это добавить метод getName в родительский класс Command и получать значение свойства таким образом:

$commands = [
    \StartCommand::class
];

$names = [];
foreach($commands as $commandClassName) {
    $name[] = (new $commandClassName)->getName();
}


Другое решение состоит в том, чтобы указывать имя статическим свойством:

$name[] = $commandClassName::getName();
    // или
    $name[] = (new $commandClassName::$name;


И допустим таких классов около 100, как лучше всего доставать значение свойства для производительности?
  • Вопрос задан
  • 98 просмотров
Пригласить эксперта
Ответы на вопрос 2
SilenceOfWinter
@SilenceOfWinter Куратор тега PHP
та еще зажигалка...
class ReflectionProperty
Ответ написан
Комментировать
Статическим методом но без создания объекта, как это сделано у вас в примере.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы