【Laravel】コントローラーの働き

PHPPHP(Laravel)
この記事は約3分で読めます。
スポンサーリンク

コントローラーは、先に学習したルーティングで割り振った処理を具体的に実装する機能です。コントローラは、MVCというLaravelやいろいろなフレームワークで使用されているアーキテクチャーです。※MVC(Model-View-Controller)の略

MVCとは?

モデル(Model)主にデータベースアクセスに関する処理全般を扱う。
ビュー(View)画面表示を扱う。テンプレートなど
コントローラー(Controller)全体の制御をする。必要に応じてModelを使ってデータベースに
アクセスしたり、Viewを使って画面を表示させたりしている。

コントローラは、プログラム本体みたいなものです。ModelやViewは、なくても、不要であれば最悪なくてもいいですが、コントローラーはルーティング情報で呼び出されるプログラムそのものなので
ないと成立しません。Laravelは、まずコントローラーを作るところから始まります。

コントローラーを作成

コントローラの作成は、ファイルを新規作成してもよいですが、今回はartisan(アーティザン)コマンドを使用して作成します。ちなみにartisanは[職人]という意味らしいです。laravelを作成したプロジェクトフォルダで以下のコマンドを実行します。

php artisan make:contoroller コントローラー名

以下のような画面がでればOKです。

コントローラー作成

Laravelプロジェクトフォルダ内にある[app]→[http]→[Controller]というフォルダの中に先ほど作成した[HelloController.php]が存在しています。この中身を見ると自動で基本コードが書かれています。

<?php namespace App\Http\Controllers;
use Illuminate\Http\Request; class HelloController extends Controller 
{
 //
 }

説明

  • <?php ・・・ これから先は,php言語で記載しているという意味
  • namespace App\Http\Controllers; ・・・名前空間でプロジェクトフォルダを起点としたパス
  • use Illuminate\Http\Request; ・・・ クラスのインポート。Requestは頻繁に使うのでデフォルトでuseで追加されている。
  • class HelloController extends Controller ・・・ コントローラークラスは、ExtendsでControllerクラスを継承している。{}で囲まれた部分に具体的な処理を追加する。
  • web.phpにアクションにルートを割り当てる設定を行うと表示される。
Route::get('hello',コントローラー名@アクション名(完全な名前空間)');
 例) Route::get('hello','App\Http\Controllers\HelloController@index');

※Laravel8からは、完全な名前空間(ここではApp\Http\Controllers\HelloController@index’)で使用しないとエラーになります。

詳しくは以下の記事にも記載しています。

Laravel8でTarget class [xxxController] does not exist.エラー
Laravel8ではweb.phpに完全な名前空間で記載する必要がある。また、以前のバージョンと同様にコントローラー名@アクション名だけで表示できるようにしたい場合は、app\Providers\RouteServiceProvider.phpに1行追加する必要がある。

 

WordPressを使うならロリポップ!
簡単インストール完備で楽々スタート!

コメント

タイトルとURLをコピーしました