2
Help us understand the problem. What are the problem?

More than 1 year has passed since last update.

posted at

updated at

Laravel5.5【初心者向け】namespace 名前空間 use 宣言

自分が勉強してよくわからん!って思った、
namespaceとuse宣言に関してまとめてみました! :sunglasses:
モデルやコントローラーに最初に記載されている、これってなに??って思っている方はぜひ読んでください。

まず、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を例に上げて説明します。

ExampleController.php
<?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宣言をより理解したい方はこちらへ

以上になります!
これでnamespaceやuse宣言の理解が0->1になっていただければ幸いです!
LGTM大好物なんで、ポチッと投げ銭感覚でおねがいします〜! :sunglasses:

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Sign upLogin
2
Help us understand the problem. What are the problem?