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

SQL見るだけクエリ#214 PHPにおける管理画面ルーティングの実装例

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

PHPにおける管理画面ルーティングの実装例について解説をしてみようと思います。

この記事を読むと(約5分)
PHPにおける管理画面ルーティングの実装についてイメージできます。

管理画面ルーティングの実装例

このサンプルコードは、基本的なルーティングやテンプレートの読み込み、モデルの読み込みを示していますが、実際のアプリケーションに適合するようにカスタマイズする必要があります。

HomeController.php ファイル内のクラスを作成

class HomeController {
  public function handleRequest() {
    // URL解析
    $url = isset($_SERVER['REQUEST_URI']) ? $_SERVER['REQUEST_URI'] : '/';
    $urlParts = explode('/', trim($url, '/'));

    // ルーティング
    $menu = isset($urlParts[1]) ? $urlParts[1] : 'dashboard';
    $action = isset($urlParts[2]) ? $urlParts[2] : 'list';

    // モデル読み込み
    require_once('model/' . $menu . '.php');
    $modelClass = ucfirst($menu) . 'Model';
    $model = new $modelClass();

    // テンプレートエンジン初期化
    require_once('libs/Smarty.class.php');
    $smarty = new Smarty();
    $smarty->template_dir = 'view/template/';
    $smarty->compile_dir = 'view/templates_c/';

    // アクションごとの処理
    $smarty->assign('action', $action);
    switch ($action) {
      case 'list':
        $data = $model->getListData();
        $smarty->assign('data', $data);
        break;
      case 'edit':
        $id = isset($urlParts[3]) ? $urlParts[3] : 0;
        $item = $model->getItemById($id);
        $smarty->assign('item', $item);
        break;
      case 'add':
        break;
      default:
        // 404ページなどを表示
        break;
    }
    $smarty->display($menu . '.tpl');

  }
}

// インスタンス生成とリクエストハンドリング
$controller = new HomeController();
$controller->handleRequest();

HomeController クラスは、PHPで作成される管理画面のルーティングを担当するクラスです。このクラスは、URLに基づいて特定のアクションを実行し、該当する画面やデータを表示します。具体的には、以下の役割を果たします。

1. URL解析とルーティング:
handleRequest メソッドは、ユーザーがアクセスしたURLを解析し、アクションと対象メニューを特定します。URLのセグメントから必要な情報を抽出し、後続の処理で使用します。
2. モデル読み込み:
アクションに応じて、対応するモデル(データ処理の部分)を読み込みます。各メニューに対応するモデルクラスを動的に読み込むことで、異なるメニューのデータ処理を行えるようになります。
3. テンプレートエンジン初期化:
Smarty というテンプレートエンジンを使用して、画面表示用のテンプレートを読み込みます。テンプレートエンジンを介して、PHPとHTMLを効果的に組み合わせて画面を生成します。
4. アクションの実行と表示:
URLに基づいて特定されたアクション(例: list, edit, add)に従って、対応する処理を実行します。データの取得や加工、テンプレートへのデータの割り当てなどを行い、最終的に対応するテンプレートを表示します。
5. ルーティングの分岐:
switch 文を使用して、アクションごとの処理を適切に分岐させます。それぞれのアクションに応じて、適切なデータの取得やテンプレートの表示が行われます。
このクラスは、URLと画面表示、データ処理の中間に位置し、アプリケーションの主要な機能の一部を担当します。URLのパスやアクション、対象メニューに基づいて柔軟な画面遷移とデータ操作を可能にし、保守性の高いコード構造を提供します。ただし、実際のアプリケーションではセキュリティ対策やエラーハンドリングも重要です。

SQLの使いどころ

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

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

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

KK

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