Let's create! WordPressサイト制作とメンテ/エラー対応から、PHP/CSS/javascriptプログラミング、動画・音・イラスト等制作まで扱うコラム

【PHP/Laravel】アプリ/ページが増えてきたときの、ルーティング分割方法

更新: 2024/04/19 1705文字

今回は、フレームワークLaravelで、ルーティングを分割してみます。1つのLaravelで複数の機能・ページを作るとルーティングが増えていくので、機能ごとに分割すると、メンテナンス性が高まります。正統派な方法と、サクッとやれる方法の2種類ご紹介。

ルーティング分割したほうが良い場合~アプリやページが増えてきてごちゃごちゃ

管理人がローカルxamppで操作しているLaravelのルーティングです。通常ページ・rest-api取得ページ・メールフォームときて、データベース操作まで作ったんですが、『このままいろいろ作ったら、routes/web.phpがごちゃごちゃになってまずい』みたいな考えが生まれました。

『機能ごとルーティングも分割』ができると、メンテナンス性が高くなるのかなという感じです。

ルーティング分割方法1~ルーティングファイルをサービスプロバイダに登録

qiita.comにはLaravelの記事もいっぱいあるんですけど、探したらありましたね~。ルーティングファイルをサービスプロバイダに登録という方法です。管理人がやった方法より、本格的な感じがします。

該当のサービスプロバイダは『app/Providers/RouteServiceProvider.php』にあります。prefix,middlewareや名前空間、追加したルーティングのパスとかを登録する形のようです。

ルーティング分割方法2~分けたルーティングファイルをrequire

やりかた

管理人はLaravelでデータベース操作するアプリを作っていて、dbtest01というルーティングで使用していました。それ関連をまとめるためにまず、routes内に『web_dbtest01route.php』というファイルを用意しました。

このファイルの中身は、こんな感じでルーティングを設定してあります。表示するときはメソッド『get』、データベース更新・削除などの関数を使うときはメソッド『post』というようになっています。

あとは、単純にroutes/web.php内でrequire。includeでも動くけど、マニュアルによると『includeはファイルアクセス不可時に E_WARNING』『requireは E_ERRORでスクリプト停止』のような違いがあります。

表示確認

では表示確認。localhost/laravel/public/dbtest01にアクセスしたところ、データベースに登録しておいた、ダミーのユーザーデータが表示されたので、ルーティングは機能しています。

表示の他、データベース追加などもokでした。

あとがき・まとめ

  • Laravelのページやアプリが増えてきたときは、ルーティングを分割できる
  • ルーティングファイルをサービスプロバイダに登録するほか、require/includeしても動く

まとめると、こんなところでしょうか。ラクなのはrequireですが、どちらを使うかは会社コーディング規約や案件のメンバーの動きによるかと思います。 (他のメンバーがサービスプロバイダでやっていた場合は、合わせたほうがバラつきが無い。追加ルーティングを見るとき、サービスプロバイダを見に行くなどの可能性もある。

とりあえず管理人も、両方の方法を押さえておきます。


【カテゴリ】- PHP
【タグ】- ,

関連記事