2017-02-20 8 views
-2

配列内で静的関数を呼び出すにはどうすればよいですか?私はそれを試しましたが、それは私に与えますConstant expression contains invalid operations私は2つのクラスLoginクラスとRouteクラスがあります。私はあなたが使用する予定があるのか​​分からない配列内の静的関数を呼び出す

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"]; 
    } 
} 
+0

あなたは、アレイ内の機能を保存したいですか? – sumit

+0

はい、関数はクラス "Login"にありますので、Login :: getJSFile()を使用しました –

+1

http://php.net/manual/en/function.forward-static-call-array.php – sumit

答えて

0

ルートクラスは私のコードで配列$ルート内:: getJSFileを()ログインを使用していますが、エラーここ

を与えます以下

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

例/ POC:

class Login { 

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

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

$login = ${$a['login']['js']}; 
これは、しかし、あなたは、変数の変数を利用でき

これはこれを実行するのに最適な方法ではありませんが、必要なことを実現します。私はあなたがこれを適切に処理するために、あなたのコードベース内の選択肢を見てHIGHLYをお勧めします。

Example/Demo

+0

$ a別のクラスに入っていますか?私はそれを試みたが、私にエラーを与える。 –

+0

@ Mr.Programmer完全なコードを表示できますか? (*あなたの答えを更新してください。) – Darren

+0

今すぐコードを更新しました –

関連する問題