はじめに
本記事では、Mac上で簡易的なLaravelプロジェクトを作成し、コントローラーを通じてブラウザに"頑張れ自分!"と表示するまでの手順を解説します。
※すでにPHPとComposerがインストールされている前提で進めます。
内容に不備などがございましたら、お手数ですが優しくご指摘いただけますと幸いです。
書こうと思ったきっかけ
コントローラーとルーティングの関係や役割についての理解があいまいだったため、復習を兼ねて記事にまとめました。
個人的にとてもわかりやすく説明されていた動画だったので、おすすめです…!
Laravelのコントローラーについて解説動画
LaravelのRouting(ルーティング)について解説動画
個人的にPHPのキャッチアップをしたくて、初学者による備忘録として記録しています。
コントローラーとは?
Laravelのコントローラーは、ブラウザなどから受け取ったリクエストに対して、どんな処理を行うかを記述する場所です。
以下、公式から引用します。
ルートファイル内でリクエスト処理ロジックをすべてクロージャとして定義する代わりに、「コントローラー」クラスを使用してこれらの動作を整理することもできます。コントローラーは、関連するリクエスト処理ロジックを単一のクラスにグループ化できます。例えば、UserControllerユーザーの表示、作成、更新、削除など、ユーザーに関連するすべての受信リクエストを1つのクラスで処理できます。デフォルトでは、コントローラーはディレクトリに保存されますapp/Http/Controllers。
引用元:https://laravel.com/docs/12.x/controllers
例えば「/hello
にアクセスされたら文字を表示する」といった振る舞いを定義します。コントローラーは、アプリの中核となるビジネスロジックやレスポンス処理を担います。
つまり、リクエスト処理を整理し、再利用しやすくするために、関連する処理をコントローラークラスにまとめられるのが、コントローラーの役割のようです!
routes/web.php
このファイルは、リクエストされたURLに対してどのコントローラーのどのメソッドを実行するかを定義する場所です。
全体の流れ(図にすると)
[ブラウザで /hello にアクセス]
↓
[ルーティングで HelloController@index を指定]
↓
[HelloController@index メソッドが実行される]
↓
[「頑張れ自分!」という文字列が返る]
↓
[画面に表示]
たとえば /hello
にアクセスされたときに HelloController@index
を呼び出すような設定をここに書きます。
use App\Http\Controllers\HelloController;
Route::get('/hello', [HelloController::class, 'index']);
参考文献
実際に動かしてみた
ステップ1:必要なものを確認
以下のソフトウェアがインストールされていることを確認します:
ソフトウェア | 確認コマンド | 備考 |
---|---|---|
PHP | php -v | 8.1以上を推奨 |
Composer | composer -V | Laravelの依存管理に必要 |
私の環境は、以下のような状況です
ステップ2:Laravelプロジェクトを作成
cd ~/Desktop/macbook\ pro
composer create-project laravel/laravel myapp
ステップ3:プロジェクトディレクトリに移動
cd myapp
プロジェクトはこんな感じです
~/Desktop/macbook pro/myapp ll
total 632
drwxr-xr-x@ 5 xxx staff 160 Jun 4 22:12 app
-rwxr-xr-x@ 1 xxx staff 425 May 27 02:17 artisan
drwxr-xr-x@ 5 xxx staff 160 Jun 4 21:05 bootstrap
-rw-r--r--@ 1 xxx staff 2419 May 27 02:17 composer.json
-rw-r--r--@ 1 xxx staff 297706 Jun 4 21:04 composer.lock
drwxr-xr-x@ 12 xxx staff 384 Jun 4 21:05 config
drwxr-xr-x@ 7 xxx staff 224 Jun 4 22:12 database
-rw-r--r--@ 1 xxx staff 414 May 27 02:17 package.json
-rw-r--r--@ 1 xxx staff 1173 May 27 02:17 phpunit.xml
drwxr-xr-x@ 6 xxx staff 192 Jun 4 21:05 public
-rw-r--r--@ 1 xxx staff 3929 May 27 02:17 README.md
drwxr-xr-x@ 5 xxx staff 160 Jun 4 21:05 resources
drwxr-xr-x@ 4 xxx staff 128 Jun 4 21:10 routes
drwxr-xr-x@ 5 xxx staff 160 Jun 4 21:18 storage
drwxr-xr-x@ 5 xxx staff 160 Jun 4 21:05 tests
drwxr-xr-x@ 41 xxx staff 1312 Jun 4 21:18 vendor
-rw-r--r--@ 1 xxx staff 331 May 27 02:17 vite.config.js
ステップ4:開発サーバーを起動
php artisan serve
ブラウザで http://127.0.0.1:8000
にアクセスすると、Laravelの初期ページが表示されます。
アクセス画面
ステップ5:コントローラーを作成し表示させる
コントローラー作成
php artisan make:controller HelloController
問題なく作成されました
コントローラー編集
app/Http/Controllers/HelloController.php
を以下のように編集:
<?php
namespace App\Http\Controllers;
class HelloController extends Controller
{
public function index()
{
return '頑張れ自分!';
}
}
コード解説
-
HelloController
という名前の コントローラーを定義 している -
index
という関数が/hello
のようなルートにアクセスされたときに呼び出される - その関数では、「頑張れ自分!」という文字列を返す
ルート設定
routes/web.php
に以下を追加:
use App\Http\Controllers\HelloController;
Route::get('/hello', [HelloController::class, 'index']);
コード解説
-
GET /hello
にアクセスされたときに、
HelloController のindex
メソッドを実行するように設定 -
これによって
/hello
にアクセスすると「頑張れ自分!」が表示される
ブラウザで確認
http://127.0.0.1:8000/hello
にアクセスすると、画面に「頑張れ自分!」と表示されます。
アクセス画面
なんだか少し元気が出てきました!!(笑)
まとめ
ここまで読んでいただき、ありがとうございました!
コントローラーとルーティングを組み合わせることで、アプリケーションのページ表示を柔軟に制御できることがわかりましたが、まだまだ学ぶべきことが多いと感じました。
今回は簡単な表示から始めましたが、今後はビューやデータベース操作などにも取り組み、アウトプットしていきたいと思います。
次回は、Bladeテンプレートを使ったHTML表示や、フォーム入力の処理にもチャレンジしていく予定です…!
参考文献