LoginSignup
10
10

More than 5 years have passed since last update.

PHPの名前空間

Last updated at Posted at 2016-04-26

はじめに

基礎的な部分ではありますが、PHPの名前空間はわりと分かりやすかったです。
自分の学習用なので、間違いがあったらコメントください。

名前空間

名前空間は、変数や関数の衝突を避けるために使用します。
jsでは空のオブジェクトを使って名前空間を作ったりしてましたが、PHPはわかりやすいです。

名前空間を作るには、namespaceで作ります。

User.php
<?php
namespace myLib\lib;

function showAge(){
  echo '55';
}

const NICK_NAME = '加藤';

class User{
  public $name = '佐藤';
}
?>
index.php
<?php

require 'User.php';

$user = new myLib\lib\User();
echo $user -> name;//佐藤

myLib\lib\showAge();//55

echo myLib\lib\NICK_NAME;//加藤

?>

名前空間のルール

名前空間の前に記述できるのは、declare文のみです。
htmlなどの記述があるとエラーとなります。

User.php
<!DOCTYPE html>
<?php
namespace myLib\lib;//Fatal error

class User{
  public $name = '佐藤';
}
?>

名前空間の階層構造

ディレクトリと同じように、名前空間は階層構造を持たせることができます。
階層構造を定義するには\(バックスラッシュ)を使用します。

namespace myLib\lib;

useで名前空間の参照をシンプルにする

例えば下記のように、名前空間の参照が複数登場したとします。
そんな場合、use 名前空間識別子 as 識別子名を使用します。

<?php

require 'User.php';

$user = new myLib\lib\User();
echo $user -> name;//佐藤

myLib\lib\showAge();//55

echo myLib\lib\NICK_NAME;//加藤

?>

useを使う

<?php

require 'User.php';

use myLib\lib as lib;

$user = new lib\User();
echo $user -> name;//佐藤

lib\showAge();//55

echo lib\NICK_NAME;//加藤

?>

終わり

他にも色々あるようなのですが、追記していきます。

10
10
2

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