Получить значения полей с класа, который екстендится, в базовом

159
31 декабря 2021, 21:50

У меня есть базовый класс BaseCommand примерно такого вида:

abstract class BaseCommand {
function handle(array $update)
{
    $this->processCommand();
}
abstract function processCommand();
abstract function defaultCommand();
abstract function settingsCommand();
abstract function startCommand();

}

И все другие классы-обработчики от него екстендятся:

class SelectLanguage extends BaseCommand {
protected $mode = 'lang';
protected $settingsMode = 'setLang';
function processCommand()
{
    switch ($this->userData['mode']) {
        case $this->mode:
            $this->startCommand();
            break;
        case $this->setMode:
            $this->settingsCommand();
            break;
        default:
            $this->defaultCommand();
    }
}
function defaultCommand()
{
 // some code
}
function settingsCommand()
{
 // another code
}
function startCommand()
{
// something else
}

И мне бы хотелось каким-то образом, если это возможно, в базовом классе получать эти поля $mode и $settingsMode и в нем же прописать логику, какой метод нужно вызвать, а так у меня в каждом классе-обработчике этот switch/case

Это кусок кода с телеграм бота и эи классы обработчики вытягиваются с конфиг файла с масивом вида команда => клас

Answer 1

В чем собственно проблема? Создать в абстрактном классе свойство а в дочернем переопределить. Ну например:

ParentClass

abstract class ParentClass
{
    protected $field = 'parent';
    public function __construct()
    {
        echo $this->field; // child
    }
}

ChildClass

class ChildClass extends ParentClass
{
    protected $field = 'child';
}

another file

new ChildClass(); // child
READ ALSO
Кодировка текста из переменной

Кодировка текста из переменной

Пытаюсь вывести в html кнопки с текстом вот таким php-скриптом:

216
Как сделать регистрацию на PHP (MVC)?

Как сделать регистрацию на PHP (MVC)?

Пытаюсь сделать авторизацию на чистом PHP с паттерном MVCПочему-то модель возвращает bool(false), вместо массива с данными пользователя при входе...

159
Альтернатива action url & post - form

Альтернатива action url & post - form

Подскажите, можно ли, например, при помощи curl'а выполнить запрос в стиле формы с последующей переадресацией ? Ну те если есть форма, то там...

82