PHP -naamruimten
PHP-naamruimten
Naamruimten zijn kwalificaties die twee verschillende problemen oplossen:
- Ze zorgen voor een betere organisatie door klassen te groeperen die samenwerken om een taak uit te voeren
- Ze laten toe dat dezelfde naam voor meer dan één klasse wordt gebruikt
U kunt bijvoorbeeld een reeks klassen hebben die een HTML-tabel beschrijven, zoals Tafel, Rij en Cel, terwijl u ook een andere reeks klassen hebt om meubels te beschrijven, zoals Tafel, Stoel en Bed. Naamruimten kunnen worden gebruikt om de klassen in twee verschillende groepen in te delen en tegelijkertijd te voorkomen dat de twee klassen Table en Table door elkaar worden gehaald.
Een naamruimte declareren
Naamruimten worden aan het begin van een bestand gedeclareerd met het namespace
trefwoord:
Syntaxis
Declareer een naamruimte met de naam Html:
namespace Html;
Opmerking: een namespace
declaratie moet het eerste zijn in het PHP-bestand. De volgende code zou ongeldig zijn:
<?php
echo "Hello World!";
namespace Html;
...
?>
Constanten, klassen en functies die in dit bestand zijn gedeclareerd, behoren tot de Html - naamruimte:
Voorbeeld
Maak een tabelklasse in de Html-naamruimte:
<?php
namespace Html;
class Table {
public $title = "";
public
$numRows = 0;
public function message() {
echo "<p>Table
'{$this->title}' has {$this->numRows} rows.</p>";
}
}
$table = new
Table();
$table->title = "My table";
$table->numRows = 5;
?>
<!DOCTYPE html>
<html>
<body>
<?php
$table->message();
?>
</body>
</html>
Voor verdere organisatie is het mogelijk om geneste naamruimten te hebben:
Syntaxis
Declareer een naamruimte met de naam Html in een naamruimte met de naam Code:
namespace Code\Html;
Naamruimten gebruiken
Elke code die op een namespace
declaratie volgt, werkt binnen de naamruimte, dus klassen die bij de naamruimte horen, kunnen worden geïnstantieerd zonder enige kwalificatie. Om toegang te krijgen tot klassen van buiten een naamruimte, moet aan de klasse de naamruimte zijn gekoppeld.
Voorbeeld
Gebruik klassen uit de HTML-naamruimte:
$table = new Html\Table()
$row = new Html\Row();
Wanneer veel klassen uit dezelfde naamruimte tegelijkertijd worden gebruikt, is het gemakkelijker om het namespace
trefwoord te gebruiken:
Voorbeeld
Gebruik klassen uit de Html-naamruimte zonder de Html\qualifier:
namespace Html;
$table = new Table();
$row = new Row();
Naamruimte alias
Het kan handig zijn om een naamruimte of klasse een alias te geven om het schrijven te vergemakkelijken. Dit gebeurt met het use
trefwoord:
Voorbeeld
Geef een naamruimte een alias:
use Html as H;
$table = new H\Table();
Voorbeeld
Geef een klasse een alias:
use Html\Table as
T;
$table = new T();