Вызов статической функции внутри массива переполнения стека

Как я могу вызвать статическую функцию внутри массива? Я попробовал это, но это дает мне Constant expression contains invalid operations У меня есть два класса, класс Login и класс Route.

класс Route использует Login :: getJSFile () внутри массива $ routs, но выдает ошибку

Вот мой код:

class Route
{
private static $routes = [
"login"                     => [
"add_to_menu"            => false,
"class"                  => "login-page",
"component"              => [],
"css"                    => ["/css/form", "/css/login"],
"default"                => true,
"display_footer_menu"    => true,
"display_header_menu"    => false,
"enable_authentication"  => true,
"enable_permission"      => false,
"form"                   => true,
"icon"                   => "<i class='fa fa-sign-in fa-fw'></i>",
"js"                     => Login::getJSFile(),
"layout"                 => "pages/login.php",
"list"                   => false,
"menu_order"             => null,
"menu_type"              => null,
"name"                   => "Login",
"no_layout"              => "pages/no-layout.php",
"parent"                 => "",
"php"                    => ["/php/login"],
"require_authentication" => false,
"require_permission"     => false,
"url"                    => "/login/"]
];
}class Login
{
private static $login_routes = [
"administrator" => [
"default"   => false,
"id"        => "administrator",
"js"        => [],
"layout"    => "pages/components/login/administrator.php",
"name"      => "Administrator",
"no_layout" => "pages/no-layout.php",
"url"       => "administrator"],
"student"       => [
"default"   => true,
"id"        => "student",
"js"        => ["/lib/Inputmask-3.x/dist/min/jquery.inputmask.bundle.min", "/js/components/login/student"],
"layout"    => "pages/components/login/student.php",
"name"      => "Student",
"no_layout" => "pages/no-layout.php",
"url"       => "student"]
];

public static function getJSFile()
{
echo self::$login_routes[self::getCurrent()]["js"];
}
}

-2

Решение

Я не знаю, как вы собираетесь использовать это, но вы могли бы использовать переменные переменные:

$login = ${$a['login']['js']};

Пример / POC ниже:

class Login {

function test() { echo 'DERP TEST DERP';}
}

$a = [
'login' => [
'js' => Login::test()
]
];

$login = ${$a['login']['js']};

Это не самый хороший способ сделать это, но он достигает того, что требуется. я делаю (ВЫСОКО) Рекомендуем вам посмотреть на альтернативы в вашей кодовой базе, чтобы справиться с этим правильно.

Пример / Демонстрация

0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector