Как обратиться к статическому методу, имея только название класса в переменной? $modules = array(
'catalog', 'shop', 'user', 'news', 'page', 'mail'
);
if(in_array(Router::$page,$modules)){
include self::PATH.Router::$page.'/index.php';
// как обратится к статическому методу, имея подключенный класс и название класса в Router::$page?
}else{
include self::PATH."show/index.php";
}
В данном коде подключается класс include self::PATH.Router::$page.'/index.php';
Далее нужно имея название класса $modules обратится к статическому методу, как это сделать?
Отказался от swith(Router::$page){
case "main"
include 'class/main/index.php';
main::show();
break;
Слишком длинное условие получается

21 Авг 2019 в 07:08
230 +1
0
Ответы
1

Вы можете использовать функцию call_user_func() для вызова статического метода. В данном случае, если у вас есть название класса в переменной $module, можно вызвать статический метод следующим образом:

if(in_array(Router::$page,$modules)){
include self::PATH.Router::$page.'/index.php';
$className = ucfirst(Router::$page); // Преобразуем первую букву в заглавную букву
call_user_func([$className, 'staticMethodName']);
}else{
include self::PATH."show/index.php";
}

Данный код вызовет статический метод с названием 'staticMethodName' в классе, чье название хранится в переменной $className. Пожалуйста, убедитесь, что класс существует и содержит указанный статический метод.

20 Апр в 13:06
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 92 548 авторам
Первые отклики появятся уже в течение 10 минут
Прямой эфир