Esercitazione PHP

PHP HOME Introduzione a PHP Installazione PHP Sintassi PHP Commenti PHP Variabili PHP PHP Eco/Stampa Tipi di dati PHP Stringhe PHP Numeri PHP PHP matematica Costanti PHP Operatori PHP PHP Se...Altro...Altro Passaggio PHP Ciclo PHP Funzioni PHP Matrici PHP Superglobali PHP RegEx PHP

Moduli PHP

Gestione dei moduli PHP Convalida del modulo PHP Modulo PHP richiesto URL/e-mail del modulo PHP Modulo PHP completo

PHP avanzato

Data e ora PHP PHP Include Gestione dei file PHP Apri/Leggi file PHP Creazione/scrittura di file PHP Caricamento file PHP Cookie PHP Sessioni PHP Filtri PHP Filtri PHP avanzati Funzioni di callback PHP PHP JSON Eccezioni PHP

PHP OOP

PHP Che cos'è OOP Classi/Oggetti PHP Costruttore PHP PHP distruttore Modificatori di accesso PHP Ereditarietà PHP Costanti PHP Classi astratte PHP Interfacce PHP Tratti PHP Metodi statici PHP Proprietà statiche PHP Spazi dei nomi PHP Iterabili PHP

Database MySQL

Database MySQL MySQL Connect MySQL Crea DB MySQL Crea tabella Dati di inserimento MySQL MySQL Ottieni l'ultimo ID MySQL inserisce più MySQL preparato MySQL Seleziona dati MySQL dove MySQL Ordina per MySQL Elimina dati Dati di aggiornamento MySQL Dati limite MySQL

PHP XML

Parser XML PHP Analizzatore PHP SimpleXML PHP SimpleXML - Ottieni PHP XML espatriato PHP XML DOM

PHP - AJAX

Introduzione all'Ajax AJAX PHP Database AJAX XML AJAX Ricerca in tempo reale AJAX Sondaggio AJAX

Esempi PHP

Esempi PHP compilatore PHP Quiz PHP Esercizi PHP Certificato PHP

Riferimento PHP

Panoramica di PHP matrice PHP Calendario PHP Data PHP Directory PHP Errore PHP Eccezione PHP File system PHP Filtro PHP PHP FTP PHP JSON Parole chiave PHP PHP Libxml Posta PHP PHP matematica PHP Varie PHP MySQLi Rete PHP Controllo dell'output PHP RegEx PHP PHP SimpleXML Flusso PHP Stringa PHP Gestione delle variabili PHP Analizzatore XML PHP Zip PHP Fuso orario PHP

Spazi dei nomi PHP


Spazi dei nomi PHP

I namespace sono qualificatori che risolvono due diversi problemi:

  1. Consentono una migliore organizzazione raggruppando classi che lavorano insieme per eseguire un'attività
  2. 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 namespaceparola chiave:

Sintassi

Dichiara uno spazio dei nomi chiamato Html:

namespace Html;

Nota: una namespacedichiarazione 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 namespacedichiarazione 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 namespaceparola 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 useparola 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();