Bruk av use og navnerom i OOP i PHP
La oss si at vi har følgende klasse Data:
<?php
namespace \Core\Admin;
class Data
{
public function __construct($num)
{
}
}
?>
La oss også si at det er en klasse Page som oppretter
objekter av klassen Data inni seg:
<?php
namespace Users;
class Page
{
public function __construct()
{
$data1 = new \Core\Admin\Data('1');
$data2 = new \Core\Admin\Data('2');
}
}
?>
Som du ser, ligger begge klassene våre
i helt forskjellige navnerom, derfor
kan ikke kall til klassen Data forenkles,
på samme måte som vi gjorde i forrige
leksjon. Disse kallene er imidlertid veldig lange
og upraktiske, ettersom det i hvert kall til klassen
Data må oppgis dens lange
navnerom.
For å løse slike problemer finnes det
en spesiell kommando use. Med
denne kommandoen er det nok å koble til
klassen én gang med sitt fulle navn, og etter det
kan man referere til denne klassen bare
med klassenavnet. Se eksempel:
<?php
namespace Users;
use \Core\Admin\Data; // kobler til klassen
class Page extends Controller
{
public function __construct()
{
$data1 = new Data('1'); // kaller bare med navnet
$data2 = new Data('2'); // kaller bare med navnet
}
}
?>
Forenkle følgende kode ved bruk av
use:
<?php
namespace Project;
class Test
{
public function __construct()
{
// Oppretter 3 objekter av samme klasse:
$data1 = new \Core\Users\Data('user1');
$data2 = new \Core\Users\Data('user3');
$data3 = new \Core\Users\Data('user3');
}
}
?>
Følgende klasser er gitt:
<?php
namespace Core\Admin;
class Controller
{
}
?>
<?php
namespace Users;
class Page extends \Core\Admin\Controller
{
}
?>
Forenkle koden for klassearving ved å bruke
kommandoen use.