1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

namespaceとusingの使い方。参照の範囲

Last updated at Posted at 2021-06-17

php の namespace + useってC系の namespace+using と違うよねって話があって…
意識したことなかったけど確かにそうだなーと思っていろいろわかりやすそうな資料を探ったんだけども…
見つからないので自分なりにまとめてみた。

php use ≒ java import
パッケージ(名前空間で分離された) クラス等の処理をまとめる

利用(use/import)するときには、区切られた空間の中のパッケージ(クラス)を利用する意思を指定する必要がある

namespace HOGEHOGE {
  class A {
    //... 処理
    public function hoge() { ... }
  }
  class B {
    // ... 処理
    public function hoge() { ... }
  }
}

use HOGEHOGE\A; // HOGEHOGEスペース(パッケージ)の中のAクラスを使うよ!
A::hoge(); // use宣言されてるので利用可
B::hoge(); // use宣言されていないので利用不可. この場合グローバルに定義されているBが呼ばれることになるのでNotFound.

C系
名前空間は空間として認知される

using 宣言された空間に定義されているクラスは利用可(空間内を走査して参照解決される)

namespace HOGEHOGE {
  class A {
    //... 処理
    public function hoge() { ... }
  }
  class B {
    //... 処理
    public function hoge() { ... }
  }
}

using HOGEHOGE; // HOGEHOGEnamespaceを使うよ
A::hoge(); // HOGEHOGE namespace内にあるAクラス。読み込み可
B::hoge(); // HOGEHOGE namespace内にあるBクラス。読み込み可

もっとわかりやすくするためにいろんなリファレンスを参照してみようと思う

1
1
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
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?