De use opdracht en namespaces in OOP in PHP
Stel we hebben de volgende klasse Data:
<?php
namespace \Core\Admin;
class Data
{
public function __construct($num)
{
}
}
?>
Stel dat er ook een klasse Page is, die
binnen zichzelf objecten van de klasse Data aanmaakt:
<?php
namespace Users;
class Page
{
public function __construct()
{
$data1 = new \Core\Admin\Data('1');
$data2 = new \Core\Admin\Data('2');
}
}
?>
Zoals je ziet, bevinden beide klassen zich
in volledig verschillende namespaces, daarom
kunnen aanroepen van de klasse Data niet worden vereenvoudigd,
op een vergelijkbare manier als we deden in de vorige
les. Deze aanroepen zijn echter erg lang
en onhandig, omdat bij elke aanroep van de klasse
Data zijn lange
namespace moet worden gespecificeerd.
Voor het oplossen van dit soort problemen bestaat
een speciale opdracht use. Met behulp van
deze opdracht is het voldoende om eenmaal verbinding te maken met de
klasse via zijn volledige naam, en daarna
kan naar deze klasse worden verwezen simpelweg
via de klassenaam. Zie voorbeeld:
<?php
namespace Users;
use \Core\Admin\Data; // verbinden de klasse
class Page extends Controller
{
public function __construct()
{
$data1 = new Data('1'); // roepen simpelweg bij naam aan
$data2 = new Data('2'); // roepen simpelweg bij naam aan
}
}
?>
Vereenvoudig de volgende code met gebruikmaking van
use:
<?php
namespace Project;
class Test
{
public function __construct()
{
// Maak 3 objecten van één klasse:
$data1 = new \Core\Users\Data('user1');
$data2 = new \Core\Users\Data('user3');
$data3 = new \Core\Users\Data('user3');
}
}
?>
Gegeven zijn de volgende klassen:
<?php
namespace Core\Admin;
class Controller
{
}
?>
<?php
namespace Users;
class Page extends \Core\Admin\Controller
{
}
?>
Vereenvoudig de code van klasse-overerving door
de opdracht use toe te passen.