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

インスタンス化が次のようになるように、常にIMOを渡す必要があり$_GETます。

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

さて、あなたがここで何を成し遂げようとしているのかについては、はっきりしていません。基本的にルーティングクラスを構築しようとしている場合、これはかなり醜く、エラーが発生しやすいと思います。

プロジェクトが単純で小さいためにフレームワークを使用したくないというコメントについては 、最初から構築するのではなく、SilexまたはSlimマイクロフレームワークを確認することをお勧めします。

たとえば、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 に答える