簡體   English   中英

傳遞參數時,PHP Altorouter中的異常行為

[英]Unexpected behaviour in PHP Altorouter when passing parameters

設定

我正在訪問以下URL: <host>/render/z63034/RBLR/GLZB

我的網址格式如下: /render/[a:title]/[a:bpFrom]/[a:bpTo]

我的路線像這樣添加:

$router->map("GET", "/render/[a:title]/[a:bpFrom]/[a:bpTo]", function ($params) { include __DIR__ . "/views/render.php"; }, "render");

然后,呼叫如下所示:

call_user_func_array($match['target'], $match['params']);

在我的index.php (所有請求都路由到其中var_dump()$match['params']var_dump()產生了預期的結果:

array(3) {
  ["title"]=>
  string(6) "z63034"
  ["bpFrom"]=>
  string(4) "RBLR"
  ["bpTo"]=>
  string(4) "GLZB"
}

在我的render.php (包括在內var_dump()$paramsvar_dump()產生了意外的結果

string(6) "z63034"

為什么只有我傳遞給call_user_func_array的數組中的第一個元素才實際傳遞(不是作為數組,而是作為值本身)?

請注意, call_user_func_array$params作為單個參數傳遞,這意味着在函數定義中,您必須聲明與$params數組一樣多的參數。

例如,如果您調用此命令:

$params = array('Hello', 'World');
call_user_func_array(array($this,'test'), $params);

您的函數定義如下所示

 function test($a){
        echo $a; 
        echo $b; 
        echo '<br>';
    }

您將只打印“ Hello”,因此您必須像這樣聲明函數

function test($a, $b){
        echo $a; 
        echo $b; 
        echo '<br>';
    }

希望能有所幫助

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM