PHPにおけるオブジェクト指向プログラミングの名前空間サブスペース

では、より複雑な状況があるとします: 管理者用に2つの Page クラスが必要です。 1つはページデータ用、もう1つはそのデータの表示用です。 最初のクラスが /admin/data/page.php ファイルにあり、 2番目のクラスが /admin/view/page.php ファイルにあるとします。

前のレッスンですでに、 admin フォルダ内のすべてのクラスは Admin 名前空間に属すると決定しました。 しかし、今、この同じ名前空間内で2つのクラスが競合しています。 この問題を解決するために、追加の名前空間サブスペースを作成できます。 たとえば、 Admin 名前空間を作成し、 その中に Data と View のサブスペースを作ることができます。 この場合、これらのサブスペースの名前は、 名前空間を定義するときも、クラスのオブジェクトを作成するときも、 バックスラッシュで区切って記述します。

ここで、サブスペースのネストレベルには 制限がないことを明確にしておく必要があります (サブスペース内にさらにサブスペースを作成することができます)。

それでは、上記で説明した例を完成させましょう。 /admin/data/page.php ファイルの Page クラスには、 Admin\Data 名前空間を指定します:

/admin/data/page.php<?php
  namespace Admin\Data;
  
  class Page
  {
    
  }
?>

/admin/view/page.php ファイルの Page クラスには、 Admin\View 名前空間を指定します:

/admin/view/page.php<?php
  namespace Admin\View;
  
  class Page
  {
    
  }
?>

クラスのオブジェクトを作成しましょう:

/index.php<?php
  require_once '/admin/data/page.php';
  require_once '/admin/view/page.php';
  
  $adminDataPage = new \Admin\Data\Page;
  $adminViewPage = new \Admin\View\Page;
?>
Задание 1

modules/cart フォルダがあるとします。 このフォルダ内のすべてのクラスが Modules\Cart 名前空間に属するように設定してください。

Задание 2

modules/shop/cart/ フォルダがあるとします。 このフォルダ内のすべてのクラスが Modules\Shop\Cart 名前空間に属するように設定してください。