У меня есть базовый класс 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
Это кусок кода с телеграм бота и эи классы обработчики вытягиваются с конфиг файла с масивом вида команда => клас
В чем собственно проблема? Создать в абстрактном классе свойство а в дочернем переопределить. Ну например:
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
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Пытаюсь сделать авторизацию на чистом PHP с паттерном MVCПочему-то модель возвращает bool(false), вместо массива с данными пользователя при входе...
Подскажите, можно ли, например, при помощи curl'а выполнить запрос в стиле формы с последующей переадресацией ? Ну те если есть форма, то там...