PHPにおけるOOPの名前空間構文
クラスに名前空間を設定するには、
そのクラスが格納されているファイルの
最初の行に、namespaceコマンドを記述し、
その後にスペースを置いて、その名前空間の名前を記述します。
クラスが何らかの名前空間に属している場合、 クラスのオブジェクトを作成するには、 クラス名だけでなく、その名前空間も バックスラッシュで区切って指定する必要があります。 例を見てみましょう。
どの名前空間にも属していない Page クラスがあるとします。
このクラスのオブジェクトは次のように作成します:
<?php
$page = new Page;
?>
次に、このクラスが Admin 名前空間に属しているとします。
この場合、このクラスのオブジェクトは次のように作成します:
<?php
$page = new \Admin\Page;
?>
ユーザー用のクラスと管理者用のクラスを 異なる名前空間に分離して、 上記のようなクラスの衝突を回避しましょう。
ファイル /admin/page.php にある Page クラスには、
Admin 名前空間を指定します:
<?php
namespace Admin;
class Page
{
}
?>
ファイル /users/page.php にある Page クラスには、
Users 名前空間を指定します:
<?php
namespace Users;
class Page
{
}
?>
次に、ファイル /index.php で、
両方の Page クラスのオブジェクトを作成してみましょう:
<?php
require_once '/admin/page.php';
require_once '/users/page.php';
$adminPage = new \Admin\Page;
$usersPage = new \Users\Page;
?>
core フォルダと project フォルダがあるとします。
各フォルダにはそれぞれ独自の Controller クラスがあります。
これらのクラスが異なる名前空間に属するように設定してください。
ファイル index.php で、両方のクラスのオブジェクトを作成してください。