Luokkaliilnimet nimiavaruuksille OOP:ssa PHP:ssä

Oletetaan, että meillä on kaksi Data-luokkaa, joita kuuluu eri nimiavaruuksiin. Oletetaan, että jossain luokassa tarvitsemme objekteja molemmista näistä luokista:

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

Oletetaan, että päätimme yksinkertaistaa luokkien kutsuja use-komennon avulla. Tässä tapauksessa meitä odottaa ongelma: molemmilla luokilla on nimi Data, mikä tarkoittaa, että meillä on nimen conflict:

/project/test.php<?php
  namespace Project;
  
  // Nimen conflict tapahtuu:
  use \Core\Users\Data; // yhdistetään ensimmäinen luokka
  use \Core\Admin\Data; // yhdistetään toinen luokka
  
  class Test
  {
    public function __construct()
    {
      $data1 = new Data;
      $data2 = new Data;
    }
  }
?>

Tämän ongelman ratkaisemiseksi on olemassa erityinen as-komento, jonka avulla voidaan antaa yhdistettävälle luokalle aliaksen - nimi, jona tämä luokka on saatavilla tässä tiedostossa. Annetaan uudet nimet luokillemme 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

Yksinkertaista seuraava koodi käyttämällä use:ä:

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

Yksinkertaista seuraava koodi käyttämällä use:ä:

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