Kommandot use och namnområden i OOP i PHP
Låt oss säga att vi har följande klass Data:
<?php
namespace \Core\Admin;
class Data
{
public function __construct($num)
{
}
}
?>
Låt oss också säga att det finns en klass Page som skapar
objekt av klassen Data inuti sig:
<?php
namespace Users;
class Page
{
public function __construct()
{
$data1 = new \Core\Admin\Data('1');
$data2 = new \Core\Admin\Data('2');
}
}
?>
Som du ser finns båda våra klasser
i helt olika namnområden, därför
kan anrop till klassen Data inte förenklas,
på samma sätt som vi gjorde i föregående
lektion. Dessa anrop är dock väldigt långa
och obekväma, eftersom vi i varje anrop till klassen
Data måste ange dess långa
namnområde.
För att lösa detta problem finns det
ett speciellt kommando use. Med hjälp av
detta kommando räcker det att ansluta
klassen en gång med dess fullständiga namn, och efter det
kan man referera till denna klass enkelt
med klassens namn. Se exemplet:
<?php
namespace Users;
use \Core\Admin\Data; // ansluter klassen
class Page extends Controller
{
public function __construct()
{
$data1 = new Data('1'); // anropar enkelt med namn
$data2 = new Data('2'); // anropar enkelt med namn
}
}
?>
Förenkla följande kod med hjälp av
use:
<?php
namespace Project;
class Test
{
public function __construct()
{
// Skapar 3 objekt av en klass:
$data1 = new \Core\Users\Data('user1');
$data2 = new \Core\Users\Data('user3');
$data3 = new \Core\Users\Data('user3');
}
}
?>
Följande klasser är givna:
<?php
namespace Core\Admin;
class Controller
{
}
?>
<?php
namespace Users;
class Page extends \Core\Admin\Controller
{
}
?>
Förenkla arvskoden genom att applicera
kommandot use.