1

私はphpクラス、RegistrationController、

<?php
 class RegistrationController  extends ParentController {

    function __construct() {
        parent::__construct();
        echo 'We are inside RegistrationController';
    }

    public function register() {
        $name = $_GET['name'];
        echo "<li> We will register soon, $name </li>";
    }
 }
?>

このような URL を介して登録メソッドにアクセスしています [参考までに、.htaccess で RewriteEngine を使用しています]

http://localhost:8888/Service/RegistrationController/register?name=Owl

質問

これで、すべて正常に動作します。計算を要求するときに、クエリにこれらの?name=Owl変数が設定されていることを確認するだけです。

Web サービスはWeb ブラウザーからアクセスできません。これは、モバイル アプリケーション用に作成したい単純なサービスです。アプリケーションは、詳細 (var) 以外は変更せずに、この URL をそのまま呼び出します。

では、クラスの関数内で $_GET や $_POST してもいいのでしょうか? スケーラブルまたは保守可能ですか?


追加情報

私はさまざまなコントローラーのメソッドを非常に一般的な方法で呼び出しているため、Bottstrap では、この関数を呼び出すだけで、コントローラーのメソッドを数行で呼び出すことができます。

private function handleMethodCallOn($controller, $url) {
        //check if the URL has specified any method to call
        if(isset($url[1])) {//URL has been exploded earlier to get content
            if(method_exists($controller, $url[1])) {
                $controller->{$url[1]}();//HERE I am calling any function
            } else {
                $error = new error_404();
            }   
        }
    }
4

2 に答える 2

2

post を使用してクラスメソッド内に入ることが完全に実行可能です。あなたのコードについて経験豊富な開発者に飛びつくのは、次の 2 つの可能性が高いです。データベース)。

フレームワークの使用に関心がない場合は、これらのことを手動で行うことができます。ただし、RESTful な要求をブートストラップし、それをオブジェクトに抽象化し、入力検証などを豊富に備えた無数の堅牢な PHP フレームワークがあります。

于 2012-06-17T01:21:38.170 に答える
0

うまくいくという意味では「OK」ですが、やるべきではありません。

それは簡単な修正です。代わりに、名前を引数として register メソッドに追加します。

簡易版...

class RegistrationController  extends ParentController {

    function __construct() {
        parent::__construct();
        echo 'We are inside RegistrationController';
    }

    public function register( $name ) {
        echo "<li> We will register soon, $name </li>";
    }
}

$registration_controller->register( $_GET['name'] )

これにより、コードが 100% 透過的になります。舞台裏で起こっている秘密はありません。

于 2012-06-17T01:23:50.690 に答える