1

我是 9 到 6 岁的 Java 程序员,但在业余时间我对 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
}

作为记录,我不想使用一个框架,这个框架太小了:P

4

1 回答 1

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 );
    }
}

您应该始终传入$_GETIMO,因此您的实例化现在看起来像这样:

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

现在,就您在这里要完成的工作而言,尚不清楚。如果您试图从本质上构建一个路由类,我认为这很丑陋并且容易出错。

关于您因为项目简单/小而不想使用框架的评论,敦促您查看 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(); 
于 2012-11-05T04:11:54.227 回答