⊗ppOpNsCU 101 of 107 menu

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.

trhyitbyid