2012-11-05 17 views
1

我是9到6歲的Java程序員,但在業餘時間,我在PHP中只有很少的代碼。 只是想知道你們怎麼想到用這一類的,什麼安全方面的考慮,我可能有在Struts中使用類似Java Action的PHP類?

class Action{ 

    var $func; 
    var $param; 

    function Action(){ 

     $url_keys = array_keys($_GET); 
     $this->func = $url_keys[0]; 
     $this->param = $_GET[$this->func]; 
    } 

    function callFunction(){ 
     $f = $this->func; 
     $f($this->param); 
    } 
} 

$ajax = new Action(); 
$ajax-> callFunction(); 

我想使用這種包括或擴展其他類。

http://localhost/proyect/object.php?update=1 

include_once("class.Action.php"); 


function update($id){ 
//the function 
} 

爲了記錄我不想使用框架這個proyect其小:P

+1

嘗試使用超薄框架PHP。這對小項目很有好處。 http://www.slimframework.com/ – Jeune

+0

謝謝,我要去看看這個框架!不知道這一個 – gonzalon

回答

0

那麼首先你應該PHP5具有知名度的關鍵字和其他一些東西來工作:

class Action { 

    protected $func; 
    protected $param; 

    public function __construct($params = array()){ 

     $url_keys = array_keys($params); 
     $this->func = $url_keys[0] . "Action"; // so use can not call function without surfix "Action" in this class 
     $this->param = $params[$this->func]; 
    } 

    public function callFunction(){ 
     $f = $this->func; 
     return $f($this->param); 
    } 
} 

你應該總是通過在$_GET IMO讓你的實例,現在看起來是這樣的:

$action = new Action($_GET); 
$action->callFunction(); 

現在至於你想在這裏完成的事情還不清楚。如果你試圖本質上構建一個路由類,我認爲這是非常醜陋和容易出錯的。

根據你對不想使用框架的評論,因爲該項目是簡單/小型的ID敦促你檢查SilexSlim微型框架,而不是從頭開始構建。

例如與Silex的:

$app = new Silex\Application(); 

$app->get('/object/update/{id}', function($id) use($app) { 
    // do your update with $id 
    // then return a response 

    return 'Update Complete'; 
    // basically you return whatever response you want so normally youd return html. 
}); 

$app->run(); 
+0

你錯過了安全的東西在這裏,我編輯你的代碼 –

+0

@邦:沒有失去任何東西。它沒有在原來的代碼中,我放入該代碼塊的唯一原因是顯示從php4到php5的函數和屬性定義的差異。事實上,我不推薦使用他所有的東西,即使你的編輯:-) – prodigitalson

+0

b/c在他提到的有關安全考慮因素的問題,所以我認爲你應該在你的答案中加入那些 –

相關問題