Brug af use og navnerum i OOP i PHP
Lad os sige, at vi har følgende klasse Data:
<?php
namespace \Core\Admin;
class Data
{
public function __construct($num)
{
}
}
?>
Lad os også sige, at der er en klasse Page, der opretter
objekter af klassen Data inde i sig selv:
<?php
namespace Users;
class Page
{
public function __construct()
{
$data1 = new \Core\Admin\Data('1');
$data2 = new \Core\Admin\Data('2');
}
}
?>
Som du kan se, ligger begge vores klasser i
helt forskellige navnerum, så
kald til klassen Data kan ikke forenkles,
på samme måde som vi gjorde i den forrige
lektion. Disse kald er dog meget lange
og ubelejlige, da det i hvert kald til klassen
Data er nødvendigt at angive dens lange
navnerum.
For at løse dette problem findes der en
speciel kommando use. Ved hjælp af
denne kommando er det nok at forbinde
klassen med dens fulde navn én gang, og efter det
vil det være muligt at henvise til denne klasse blot
ved klassenavnet. Se eksemplet:
<?php
namespace Users;
use \Core\Admin\Data; // forbinder klassen
class Page extends Controller
{
public function __construct()
{
$data1 = new Data('1'); // kalder blot efter navn
$data2 = new Data('2'); // kalder blot efter navn
}
}
?>
Forenkl følgende kode ved hjælp af
use:
<?php
namespace Project;
class Test
{
public function __construct()
{
// Opretter 3 objekter af samme klasse:
$data1 = new \Core\Users\Data('user1');
$data2 = new \Core\Users\Data('user3');
$data3 = new \Core\Users\Data('user3');
}
}
?>
Følgende klasser er givet:
<?php
namespace Core\Admin;
class Controller
{
}
?>
<?php
namespace Users;
class Page extends \Core\Admin\Controller
{
}
?>
Forenkl arvekoden ved at anvende
kommandoen use.