2017-02-25 16 views
0

的index.php注意:Array對字符串的轉換時從數組值動態呼叫方法

include_once "system/libs/Main.php"; 
include_once "system/libs/FController.php"; 

$url = $_GET['url']; 
$url = rtrim($url,'/'); 
$url =explode("/", $url); 

include('app/controllers/'.$url[0].'.php'); 

$ctlr = new $url[0](); 
$ctlr->$url[1](); 

==================== ==

如果來自數組索引的回聲是好的。 當我直接調用方法它也OK。

但是當我從數組索引值動態調用方法它說: 「注意:數組到字符串轉換」。

+1

哪裏是這裏的數組索引? – hassan

回答

0

嘗試圍繞$url[1]與括號(但要知道執行PHP $ _GET不是最好的安全)。

您的代碼應該再是這樣的:

$ctlr->{$url[1]}(); 
+0

感謝您的回覆。有用! :) 順便說一句,我應該使用什麼,而不是$ _GET在這種情況下,因爲我想使用mvc結構?我以這種方式傳遞所有控制器,模型和方法。 – Forkan

+0

@Forkan代替使用$ _GET動態執行函數,您可以使用switch($ url [1])',然後爲每個方法創建一個'case'方法'',認爲您使用的方法更安全可能導致代碼任意執行 (也可以使用get請求在您的機器上執行代碼)。 不用說,你的代碼是好的:) – Ad5001

相關問題