0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

名前空間 (namespace / use)の役割・使い方について

Last updated at Posted at 2025-03-01

はじめに

php(Yii)の開発に携わることになったので、初歩的な内容ですが気になった点をまとめています。

namespace(名前空間)が必要な理由

1. 名前の衝突を防ぐ

例えば、MVCのフレームワークにおいてmodels フォルダに User クラスを作成したとします。

namespace app\models;

class User {
    // モデルのコード
}

しかし、別のディレクトリ controllers にも User クラスを作成した場合、PHP は どの User を指すのか区別できません。

namespace app\controllers;

class User {
    // コントローラーのコード
}

このように、同じ名前のクラスが複数存在する場合に、namespace を使って整理することが重要になります。

2. 名前空間がないとクラスを使うのが大変

例えば models\User クラスを controllers\User から使いたい場合、名前空間がないと次のような問題が発生します。

// どの User を使うのかわからずエラー
$user = new User();

しかし、namespaceを使うと、どの Userなのか明確になります。

$user = new \app\models\User(); // フルネームで指定

これにより、同じ名前のクラスが複数あっても、適切なクラスを使い分けることができます。

PHP:名前空間の概要

use 文の役割

use 文は、名前空間を省略してコードを簡潔に書くために使います。

1. use 文がない場合

models\User クラスを controllers\User から使う場合、フルネームを毎回書く必要があります。

$user = new \app\models\User();

2. use 文を使う場合

use 文を使えば、フルネームを省略して書けます。

use app\models\User;

$user = new User(); // 短くて分かりやすい

これにより、コードが短く、可読性が向上 します。

PHP:名前空間の使用法: エイリアス/インポート
https://www.php.net/manual/ja/language.namespaces.importing.php

namespaceuse の関係まとめ

概念 役割
namespase クラス名の衝突を防ぐための識別子
use 名前空間を省略し、コードを短くする

例:namespaceuse の関係

namespace app\controllers;

use app\models\User; // `app\models\User` を `User` として使える

class SiteController {
    public function actionIndex() {
        $user = new User(); // `app\models\User` を簡単に使える
    }
}

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?