Как обратиться к статическому методу, имея только название класса в переменной? $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
374 +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 Апр 2024 в 13:06
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир