PHPにおけるオブジェクト指向プログラミングにおける名前空間のクラスエイリアス

異なる名前空間に属する2つのクラス Data があるとします。 あるクラスで、これら両方のクラスのオブジェクトが必要な状況を考えます:

/project/test.php<?php
  namespace Project;
  
  class Test
  {
    public function __construct()
    {
      $data1 = new \Core\Users\Data; // オブジェクトを作成
      $data2 = new \Core\Admin\Data; // オブジェクトを作成
    }
  }
?>

ここで、 use コマンドを使ってクラスの呼び出しを簡略化することにしました。 この場合、問題が発生します:両クラスが同じ名前 Data を持っているため、名前の衝突が起こります:

/project/test.php<?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 の名前を変更してみましょう:

/project/test.php<?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;
    }
  }
?>
Задание 1

以下のコードを use を使用して簡略化してください:

php<?php
  namespace Project;
  
  class Test
  {
    public function __construct()
    {
      $pageController  = new \Resource\Controller\Page;
      $pageModel       = new \Resource\Model\Page;
    }
  }
?>
Задание 2

以下のコードを use を使用して簡略化してください:

php<?php
  namespace Project\Data;
  
  class Test
  {
    public function __construct()
    {
      $pageController  = new \Project\Data\Controller\Page;
      $pageModel       = new \Project\Data\Model\Page;
    }
  }
?>