PHP naamruimtes
PHP naamruimtes
Naamruimtes is kwalifiseerders wat twee verskillende probleme oplos:
- Hulle maak voorsiening vir beter organisasie deur klasse te groepeer wat saamwerk om 'n taak uit te voer
- Hulle laat toe dat dieselfde naam vir meer as een klas gebruik word
Byvoorbeeld, jy kan 'n stel klasse hê wat 'n HTML-tabel beskryf, soos Tabel, Ry en Sel, terwyl jy ook 'n ander stel klasse het om meubels te beskryf, soos Tafel, Stoel en Bed. Naamruimtes kan gebruik word om die klasse in twee verskillende groepe te organiseer, terwyl dit ook voorkom dat die twee klasse Tabel en Tabel deurmekaar gemeng word.
Verklaar 'n naamruimte
Naamruimtes word aan die begin van 'n lêer verklaar deur die namespace
sleutelwoord:
Sintaksis
Verklaar 'n naamruimte genaamd HTML:
namespace Html;
Let wel: 'n namespace
Verklaring moet die eerste ding in die PHP-lêer wees. Die volgende kode sal ongeldig wees:
<?php
echo "Hello World!";
namespace Html;
...
?>
Konstante, klasse en funksies wat in hierdie lêer verklaar word, sal aan die Html - naamspasie behoort:
Voorbeeld
Skep 'n tabelklas in die 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>
Vir verdere organisasie is dit moontlik om geneste naamruimtes te hê:
Sintaksis
Verklaar 'n naamruimte genaamd HTML binne 'n naamruimte genaamd Kode:
namespace Code\Html;
Gebruik naamruimtes
Enige kode wat op 'n namespace
verklaring volg, werk binne die naamruimte, so klasse wat aan die naamruimte behoort, kan sonder enige kwalifiseerders geïnstansieer word. Om toegang tot klasse van buite 'n naamspasie te verkry, moet die klas die naamspasie daaraan gekoppel hê.
Voorbeeld
Gebruik klasse van die HTML-naamruimte:
$table = new Html\Table()
$row = new Html\Row();
Wanneer baie klasse van dieselfde naamruimte op dieselfde tyd gebruik word, is dit makliker om die namespace
sleutelwoord te gebruik:
Voorbeeld
Gebruik klasse van die Html-naamruimte sonder die behoefte vir die Html\qualifier:
namespace Html;
$table = new Table();
$row = new Row();
Naamruimte Alias
Dit kan nuttig wees om 'n naamruimte of klas 'n alias te gee om dit makliker te maak om te skryf. Dit word gedoen met die use
sleutelwoord:
Voorbeeld
Gee 'n naamruimte 'n alias:
use Html as H;
$table = new H\Table();
Voorbeeld
Gee 'n klas 'n alias:
use Html\Table as
T;
$table = new T();