PHPのOOPにおける名前空間の相対パス
ファイル index.php で
次の呼び出しが行われるとします:
<?php
namespace Admin\Data;
new \Core\Controller;
?>
ご存知の通り、クラスを参照する際、 その名前空間の前にバックスラッシュを書く必要があります。 実はこれは必須ではありません。 このバックスラッシュを書かなかった場合、 呼び出される名前空間は現在の名前空間に対して 相対的に計算されます。例をご覧ください:
<?php
namespace Admin\Data;
new Core\Controller; // \Admin\Data\Core\Controller と同等
?>
次の2つのクラスがあります:
<?php
namespace Modules\Shop\Core;
class Cart
{
}
?>
<?php
namespace Modules\Shop;
class UserCart extends \Modules\Shop\Core\Cart
{
}
?>
両方のクラスの名前空間に共通する部分があることを考慮し、 クラス継承のコードを簡略化してください。
次の2つのクラスがあります:
<?php
namespace Core\Data;
class Controller
{
}
?>
<?php
namespace Core\Data;
class Model
{
}
?>
以下のように、ファイル index.php で
これらのクラスのオブジェクトが作成されます:
<?php
namespace Core\Data;
$controller = new \Core\Data\Controller;
$model = new \Core\Data\Model;
?>
オブジェクトが作成される名前空間を考慮し、 オブジェクト作成のコードを簡略化してください。