Klašu pseidonīmi vārdtelpām OOP PHP

Pieņemsim, ka mums ir divas klases Data, piederīgas dažādām vārdtelpām. Pieņemsim, ka kādā klasē mums vajag objektus no abām šīm klasēm:

/project/test.php<?php
  namespace Project;
  
  class Test
  {
    public function __construct()
    {
      $data1 = new \Core\Users\Data; // izveidojam objektu
      $data2 = new \Core\Admin\Data; // izveidojam objektu
    }
  }
?>

Pieņemsim, ka mēs nolēmām vienkāršot klašu izsaukšanu izmantojot komandu use. Šajā gadījumā mūs gaida problēma: abām klasēm ir vārds Data, un tas nozīmē, ka mums būs vārdu konflikts:

/project/test.php<?php
  namespace Project;
  
  // Būs vārdu konflikts:
  use \Core\Users\Data; // pievienojam pirmo klasi
  use \Core\Admin\Data; // pievienojam otro klasi
  
  class Test
  {
    public function __construct()
    {
      $data1 = new Data;
      $data2 = new Data;
    }
  }
?>

Šīs problēmas risināšanai pastāv speciāla komanda as, kas ļauj pievienojamajai klasei iestatīt pseidonīmu - vārdu, ar kuru šī klase būs pieejama šajā failā. Izveidosim mūsu klašu Data pārdēvēšanu:

/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

Vienkāršojiet šādu kodu izmantojot use:

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

Vienkāršojiet šādu kodu izmantojot use:

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