[英]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()
, $params
的var_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.