PHPにおけるオブジェクト指向プログラミングにおける名前空間のクラスエイリアス
異なる名前空間に属する2つのクラス Data があるとします。
あるクラスで、これら両方のクラスのオブジェクトが必要な状況を考えます:
<?php
namespace Project;
class Test
{
public function __construct()
{
$data1 = new \Core\Users\Data; // オブジェクトを作成
$data2 = new \Core\Admin\Data; // オブジェクトを作成
}
}
?>
ここで、 use コマンドを使ってクラスの呼び出しを簡略化することにしました。
この場合、問題が発生します:両クラスが同じ名前 Data を持っているため、名前の衝突が起こります:
<?php
namespace Project;
// 名前の衝突が発生します:
use \Core\Users\Data; // 最初のクラスをインポート
use \Core\Admin\Data; // 2番目のクラスをインポート
class Test
{
public function __construct()
{
$data1 = new Data;
$data2 = new Data;
}
}
?>
この問題を解決するために、特別なコマンド as があります。
これにより、インポートするクラスに エイリアス(別名)を付けることができます。このエイリアスが、そのファイル内でそのクラスにアクセスする際の名前になります。
クラス Data の名前を変更してみましょう:
<?php
namespace Project;
use \Core\Users\Data as UsersData;
use \Core\Admin\Data as AdminData;
class Test
{
public function __construct()
{
$data1 = new UsersData;
$data2 = new AdminData;
}
}
?>
以下のコードを use を使用して簡略化してください:
<?php
namespace Project;
class Test
{
public function __construct()
{
$pageController = new \Resource\Controller\Page;
$pageModel = new \Resource\Model\Page;
}
}
?>
以下のコードを use を使用して簡略化してください:
<?php
namespace Project\Data;
class Test
{
public function __construct()
{
$pageController = new \Project\Data\Controller\Page;
$pageModel = new \Project\Data\Model\Page;
}
}
?>