はじめに
基礎的な部分ではありますが、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;//加藤
?>
終わり
他にも色々あるようなのですが、追記していきます。