9cubed
ブログ | Tailwind | Vite | Python | Node.js | Linux | PowerShell | その他 | 将棋ウォーズ | 歌の練習
< 前の記事

PHP - 他のPHPファイルの読み込み

次の記事 >

PHP - 例外処理

PHP

PHP - namespace(名前空間)

公開日:2020-12-22
更新日:2020-12-22

1. 概要

namespace(名前空間)についてです。

大規模なプロジェクトになると、1度に複数のPHPファイルを読み込むため、
クラス名や関数名が重複する可能性があります。
そこで、クラス名や関数名の他に、namespace(名前空間)と言う名前を付けることで、重複を防ぐことができます。
考え方としては、住所の都道府県、市区町村などと同じです。

定義方法
namespace 名前空間1\名前空間2\名前空間3;

クラス
関数
定数
ブロックで指定することもできます。
namespace 名前空間1\名前空間2\名前空間3 {
  クラス
  関数
  定数
}

2. 使用例

namespace 内に定義されたクラスを、他の namespace 内で使用する場合は、
namespace を付けたフルクラス名で指定するか、use で指定する必要があります。

namespace tokyo\ikebukuro;
class Test {
    public function printName() {
        print("Ikebukuro\n");
    }
}

namespace tokyo\shibuya;
class Test {
    public function printName() {
        print("Shibuya\n");
    }
}

namespace tokyo\minato;
$obj1 = new \tokyo\ikebukuro\Test();
$obj1->printName(); // Ikebukuro

$obj2 = new \tokyo\shibuya\Test();
$obj2->printName(); // Shibuya

// use を使うと、名前空間を省略できる
use \tokyo\ikebukuro\Test;
use \tokyo\shibuya\Test as ShibuyaTest;

$obj3 = new Test();
$obj3->printName(); // Ikebukuro

$obj4 = new ShibuyaTest();
$obj4->printName(); // Shibuya
実行結果
Ikebukuro
Shibuya
Ikebukuro
Shibuya

namespace 内では、namespace が指定されていない既存のクラス名の前に「\」を付ける必要があります。
付けない場合は、同じ namespace のクラスを探しに行くため、エラーとなります。
namespace tokyo\chiyoda;

//$d = new DateTime(); // tokyo\chiyoda\DateTime を探しに行ってエラーになる
$d = new \DateTime(); // 前に「\」を付ける
var_dump($d);
実行結果
object(DateTime)#1 (3) {
  ["date"]=>
  string(26) "2020-12-02 13:39:18.026128"
  ["timezone_type"]=>
  int(3)
  ["timezone"]=>
  string(3) "UTC"
}

< 前の記事

PHP - 他のPHPファイルの読み込み

次の記事 >

PHP - 例外処理

YouTube X

新着一覧

  • SCSS のインストールVite
  • Tailwind CSS のプロジェクトの作成Tailwind
  • TypeScriptのプロジェクトの作成Vite
  • Flask のインストールと動作確認Python
  • 簡易Webサーバーの作成Python
  • pipeline で文章の生成Python
  • pipeline で文章の要約Python
  • 音声から文字起こしPython
  • Node.js のインストールNode.js
  • .ps1(PowerShellスクリプト)を実行可能にするPowerShell

アーカイブ

  • 2025/12
  • 2025/11
  • 2025/10
  • 2025/09
  • 2025/08

以前のカテゴリー一覧

  • CakePHP3
  • CentOS7
  • HTML・CSS・JavaScript
  • Haskell
  • JavaScript
  • Kotlin
  • Laravel5
  • PHP
  • Python
  • Ruby
  • RubyOnRails5
  • TypeScript
  • Vue.js
  • Webサーバ講座
  • Webプログラミング講座
  • jQuery
  • linux
  • パソコン講座
  • ブログ
  • プログラミング講座
  • メモ帳作成講座
  • 数学

Copyright © 9cubed. All Rights Reserved.

プライバシーポリシー 利用規約
▲