UI設計したり、ウェブシステムを開発したりします。 

SQL見るだけクエリ#250 PHP URL解析してルーティング

記入日:2023-09-15 編集日:2023-09-15

PHP URL解析してルーティングする方法について解説をしてみようと思います。

この記事を読むと(約5分)
PHP URL解析してルーティングする方法に関してイメージできます。

PHP URL解析してルーティング

URL解析してルーティングするコードをPHPで記述する方法について説明します。

まず、基本的な考え方は、リクエストされたURLを解析し、それに基づいて適切な処理を行うことです。
これを実現するためには、以下の手順を踏む必要があります。

1. URLの取得:
リクエストされたURLを取得します。これは通常、$_SERVER['REQUEST_URI']を使用して取得できます。

2. URLの解析:
取得したURLを解析し、ルーティングに必要な情報を抽出します。これには、例えばパスやクエリパラメータの解析が含まれます。

3. ルーティング:
解析した情報を基にして、適切な処理を行います。これは通常、条件分岐や関数呼び出しを使って行います。


以下に、これらの手順を示す基本的なPHPのコード例を示します。

// 1. URLの取得
$request_uri = $_SERVER['REQUEST_URI'];

// 2. URLの解析
$parts = explode('/', $request_uri);
$controller = isset($parts[1]) ? $parts[1] : 'default';
$action = isset($parts[2]) ? $parts[2] : 'index';

// 3. ルーティング
switch ($controller) {
  case 'products':
    require_once('controllers/productsController.php');
    $productsController = new ProductsController();
    
    switch ($action) {
      case 'show':
        $productId = isset($parts[3]) ? $parts[3] : null;
        $productsController->show($productId);
        break;
      // 他のアクションに対する処理
      default:
        $productsController->index();
    }
    break;
  // 他のコントローラに対する処理
  default:
    require_once('controllers/defaultController.php');
    $defaultController = new DefaultController();
    $defaultController->index();
}

このコード例では、以下のようなURLを想定しています:

/products: ProductsControllerのindexアクションを実行

/products/show/123: ProductsControllerのshowアクションを実行し、商品IDが123である商品を表示


この例では非常に基本的なものであり、実際のアプリケーションではもっと複雑なルーティングシステムやエラーハンドリングなどが必要になる場合があります。

SQLの使いどころ

サイトに大量の情報を掲載することは、ユーザーにとってとても便利なことです。しかし、情報が多すぎると、目的の情報を見つけるのが困難になります。そのため、SQLを使用することで、情報を効率的に管理することができます。

SQLを使用することで、データベース内の情報を検索したり、フィルタリングしたりすることができます。これにより、ユーザーは目的の情報をスムーズかつ簡単に見つけることができます。

また、SQLを使用することで、データを集計したり、統合したりすることもできます。これにより、ユーザーはさまざまな視点から情報を分析することができます。つまり、サイトに多くの情報を掲載することが重要である一方で、その情報を効率的かつ簡単に管理することが求められる場合には、SQLが不可欠であるといえます。

KK

機械工学を専攻。工業デザイナーとして、国内及び海外の自動車・搬送ラインの設計などに従事した後、2003年にウェブシステム会社を設立。UI設計やウェブシステムの開発、DX化のディレクションなどを行っています。