現在の位置: ホーム> 最新記事一覧> Parse_urlを使用して、簡単なルーティング配信分析を行います

Parse_urlを使用して、簡単なルーティング配信分析を行います

gitbox 2025-05-26

Webアプリケーションを開発する場合、ルーティングシステムの機能は、ユーザーがリクエストしたURLを対応するコントローラーとメソッドに解析することです。最新のフレームワーク(LaravelやSymfonyなど)には、軽量プロジェクトや学習段階で組み込みの強力なルーティングシステムがありますが、PHPに付属するPARSE_URL関数を使用して、単純なルーティング配信メカニズムを実装することもできます。

この記事では、 parse_urlといくつかの文字列処理関数を使用して、単純なURLルーティング解像度システムを構築する方法を紹介します。

1。parse_urlの基本的な使用

Parse_urlは、PHPの組み込み関数であり、Scheme、Host、Path、クエリなどのコンポーネントにURLを分割するために使用されます。例は次のとおりです。

 $url = 'https://gitbox.net/user/profile?id=42';

$parts = parse_url($url);

print_r($parts);

出力:

 Array
(
    [scheme] => https
    [host] => gitbox.net
    [path] => /user/profile
    [query] => id=42
)

出力からわかるように、 parse_urlは、ルーティング解決を実装するために必要な重要な部分であるURLのパスとクエリを正確に取得するのに役立ちます。

2。基本的なルーティングシステムを構築します

次のようなURLをサポートする簡単なルーティングシステムを構築しましょう。

 https://gitbox.net/controller/action/param1/param2

コントローラーアクションの名前に従って対応する方法を呼び出し、次のパラメーターを渡したいと考えています。

1.現在のリクエストのURLを取得します

PHPアプリケーションがURLの書き換えをサポートするサーバーにデプロイされていると仮定すると、 $ _Server ['request_uri']を介して現在の要求パスを取得できます。

 $requestUri = $_SERVER['REQUEST_URI'];

2。クエリ文字列を削除し、パスを解析します

$path = parse_url($requestUri, PHP_URL_PATH);

// 始まりと終了のスラッシュを削除します,スラッシュで分割されます
$segments = explode('/', trim($path, '/'));

3。対応するコントローラーとメソッドに配布します

$controller = !empty($segments[0]) ? ucfirst($segments[0]) . 'Controller' : 'HomeController';
$action = isset($segments[1]) ? $segments[1] : 'index';
$params = array_slice($segments, 2);

4.サンプルコントローラークラス

class UserController {
    public function profile($id = null) {
        echo "User profile page. ID: " . htmlspecialchars($id);
    }
}

5。コントローラーとメソッドを呼び出します

if (class_exists($controller)) {
    $instance = new $controller();
    if (method_exists($instance, $action)) {
        call_user_func_array([$instance, $action], $params);
    } else {
        http_response_code(404);
        echo "この方法は存在しません:$action";
    }
} else {
    http_response_code(404);
    echo "コントローラーは存在しません:$controller";
}

3.テスト例

次のアドレスにアクセスするとします。

 https://gitbox.net/user/profile/42

解析された変数は次のとおりです。

 $controller = 'UserController';
$action = 'profile';
$params = ['42'];

出力:

 User profile page. ID: 42

4。結論

Parse_url関数とExploreおよびcall_user_func_arrayを組み合わせることにより、非常に単純なコードで軽量ルーティング配信メカニズムをすばやく構築できます。複雑なアプリケーションのニーズを満たすことはできませんが、簡単なAPIインターフェイスを学習および構築するのに十分実用的です。その後の開発では、定期的なマッチング、デフォルトのパラメーター、エラー処理、名前空間サポートをさらに追加して、システムをより完全にすることができます。