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

SQL見るだけクエリ#210 URLからコントローラー、アクション、およびIDを抽出するPHPコード

記入日:2023-08-06 編集日:2023-08-06

URLからコントローラー、アクション、およびIDを抽出するPHPコードに関して解説をしてみようと思います。

この記事を読むと(約5分)
URLからコントローラー、アクション、およびIDを抽出するPHPコードをイメージできます。

URLからコントローラー、アクション、およびIDを抽出

$request_uri = $_SERVER["REQUEST_URI"];
$parts = explode('/', $request_uri);

$controller = (isset($parts[1]) && $parts[1] !== '') ? ucfirst($parts[1]) . 'Controller' : 'ItemController';
$action = (isset($parts[2]) && $parts[2] !== '') ? $parts[2] : 'index';
$id = (isset($parts[3]) && $parts[3] !== '') ? $parts[3] : null;

$controllerFile = 'controllers/' . $controller . '.php';

このコードは、PHPでMVC(Model-View-Controller)アーキテクチャを使用してWebアプリケーションを構築する際に、URLからコントローラー、アクション、およびIDを抽出するための処理を行います。

  • $request_uriには、現在のURLの情報が格納されます。
  • explode()関数を使ってURLを/で分割し、$parts配列に格納します。
  • $parts[1]はコントローラー名を表し、ucfirst()関数を使って最初の文字を大文字にします。
  • $parts[2]はアクション名を表します。存在しない場合はデフォルトのアクション名'index'が使用されます。
  • $parts[3]はIDを表します。存在しない場合はnullがセットされます。
  • 最終的に$controllerFileには、コントローラーファイルのパスが格納されます。

これにより、要求されたURLから適切なコントローラーとアクションを特定できます。これらの値は、MVCパターンに従って、リクエストに対応する処理を実行するために使用される可能性が高いです。


このコードは、主にRESTfulなURLを想定しています。RESTfulなURLは、リソースを表す名詞や名詞の組み合わせを使用して、Webアプリケーションのエンドポイントを表現する方法です。一般的なRESTfulなURLの例としては以下のようなものがあります:

  1. /users: ユーザーに関する情報を扱うエンドポイント
  2. /posts: 投稿(記事)に関する情報を扱うエンドポイント
  3. /products: 商品に関する情報を扱うエンドポイント

これらのURLには、コントローラー名とアクション名が含まれる可能性があります。例えば、/users/show/123のようなURLでは、UserControllerのshowアクションを呼び出し、IDが123のユーザーの情報を表示することが想定されています。

もちろん、実際のアプリケーションによってURLの構造やパスの意味は異なる場合があります。RESTfulなURLデザインは一般的であり、このようなコードは、Webアプリケーションのリクエストを適切に処理するためにURLを分解するために広く使用されています。

SQLの使いどころ

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

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

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

KK

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