Spazi dei nomi PHP
Spazi dei nomi PHP
I namespace sono qualificatori che risolvono due diversi problemi:
- Consentono una migliore organizzazione raggruppando classi che lavorano insieme per eseguire un'attività
- Consentono di utilizzare lo stesso nome per più di una classe
Ad esempio, potresti avere un insieme di classi che descrivono una tabella HTML, come Table, Row e Cell, mentre hai anche un altro insieme di classi per descrivere i mobili, come Table, Chair e Bed. Gli spazi dei nomi possono essere utilizzati per organizzare le classi in due gruppi diversi, evitando anche che le due classi Table e Table vengano confuse.
Dichiarazione di uno spazio dei nomi
I namespace sono dichiarati all'inizio di un file usando la namespace
parola chiave:
Sintassi
Dichiara uno spazio dei nomi chiamato Html:
namespace Html;
Nota: una namespace
dichiarazione deve essere la prima cosa nel file PHP. Il seguente codice non sarebbe valido:
<?php
echo "Hello World!";
namespace Html;
...
?>
Costanti, classi e funzioni dichiarate in questo file apparterranno allo spazio dei nomi Html :
Esempio
Crea una classe Table nello spazio dei nomi Html:
<?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>
Per un'ulteriore organizzazione, è possibile avere spazi dei nomi nidificati:
Sintassi
Dichiara uno spazio dei nomi chiamato Html all'interno di uno spazio dei nomi chiamato Codice:
namespace Code\Html;
Utilizzo degli spazi dei nomi
Qualsiasi codice che segue una namespace
dichiarazione opera all'interno dello spazio dei nomi, quindi le classi che appartengono allo spazio dei nomi possono essere istanziate senza alcun qualificatore. Per accedere alle classi dall'esterno di uno spazio dei nomi, alla classe deve essere collegato lo spazio dei nomi.
Esempio
Usa le classi dallo spazio dei nomi HTML:
$table = new Html\Table()
$row = new Html\Row();
Quando vengono utilizzate più classi dello stesso spazio dei nomi contemporaneamente, è più semplice utilizzare la namespace
parola chiave:
Esempio
Usa le classi dallo spazio dei nomi Html senza la necessità del qualificatore Html\:
namespace Html;
$table = new Table();
$row = new Row();
Alias spazio dei nomi
Può essere utile assegnare a uno spazio dei nomi oa una classe un alias per semplificare la scrittura. Questo viene fatto con la use
parola chiave:
Esempio
Assegna un alias a uno spazio dei nomi:
use Html as H;
$table = new H\Table();
Esempio
Assegna a una classe uno pseudonimo:
use Html\Table as
T;
$table = new T();