自分が勉強してよくわからん!って思った、
namespaceとuse宣言に関してまとめてみました!
モデルやコントローラーに最初に記載されている、これってなに??って思っている方はぜひ読んでください。
まず、namespace、use宣言を理解をするにはLaravelの構造を知っていたほうがいいので、下記にLaravelのディレクトリ構造の一部を用意しました。
#Laravel 構成
Laravel5.5
├── app
│ ├── Console
│ ├── Exceptions
│ ├── Providers
│ ├── Http
│ │ ├── Controllers
│ │ │ └── *コントローラーはここ
│ │ │ └──(例)ExampleController.php
│ │ ├── Middleware ... 認証、CSRF保護など
│ │ └── Requests ... リクエストクラス(バリデーション設定など)
│ └── *モデルはここ
├── bootstrap
├── config
├── database...DB関連
├── public
├── resources
│ └── views
│ └──*ビューはここ
├── routes
│ └── web.php
├── storage
├── tests
└── vendor
└──laravel
└──framework
└──src
└──illuminate
いろんなディレクトリがあることがわかりますね。
こんな構成なんだってことを頭において、次に進みましょう〜!
#名前空間とuse宣言を簡単にまとめると
名前空間->ファイルの場所を示す use宣言->ファイル内で使うクラスの宣言
以下、ExampleControllerを例に上げて説明します。
<?php
namespace App\Http\このファイルのあるディレクトリ名;
(例) namespace App\Http\Controllers;
use 使用するクラスの場所\クラス名(モデル名);
(例) use Illuminate\Http\Request;
class ExampleController extends Controller {
//処理
}
名前空間はファイルの場所を示す
て意味でしたね!
上のディレクトリ構造の図でExampleController.phpを探してみましょう〜!
appからたどっていくと目的のファイルまでは
app->Http->Controllers->ExampleController.php になりますね!
なのでファイルの場所を表すと、namespace App\Http\Controllers;
ってなります。
また、このExampleController.phpのファイル内で使用したいクラスの宣言は
useを用いて書きます。
use Illuminate\Http\Request;
↑はHttp内にあるRequestモデル内のRequestクラスを使用しますっていう意味です。
####ここで、ちょっと知っていて欲しいこと
######1.Illuminateまでのディレクトリは省略して書いてあるということ。
use宣言ではこう書く
Illuminate\Http\Request;
でも、実際のファイルの場所はこう。
vendor\laravel\framework\src\illuminate\Http\Request;
app直下にilluminateってファイルがないからみんなどこ??っなるパターンです。
######2.モデル名とそのモデルに書くクラス名は同じ。
これはもうルールなのでそう覚えましょう!
php artisan make:model Example
のコマンドを用いて自動でファイル作るとクラス名(Example)がすでに書かれていることはそういうことなのです。
######3.namespaceとuse宣言の必要性に関して疑問に思った方は下のリンクに飛んでみましょう!
[namespaceとuse宣言をより理解したい方はこちらへ][名前]
[名前]:https://laraweb.net/surrounding/1599/
以上になります!
これでnamespaceやuse宣言の理解が0->1になっていただければ幸いです!
LGTM大好物なんで、ポチッと投げ銭感覚でおねがいします〜!