Articoli

Laravel namespaces: cosa sono e come funzionano

I namespace in Laravel sono definiti come una classe di elementi, in cui ogni elemento ha un nome diverso da quello della classe associata. 

Tempo di lettura stimato: 3 minuti

Namespace in Laravel

In Laravel, un namespace è un modo per incapsulare un gruppo di classi, interfacce, funzioni e costanti correlate. I namespace sono progettati per risolvere due problemi:

  • Evitare conflitti di nomi tra il codice creato e classi/funzioni/costanti PHP interne o classi/funzioni/costanti di terze parti;
  • Fornire un modo migliore per organizzare e raggruppare le lezioni;

Laravel utilizza i name space per organizzare sistematicamente i suoi vari componenti e servizi. Ad esempio, il namespace predefinito per i controller in un’applicazione Laravel è App\Http\Controllers. Ciò significa che se crei una classe controller, dovrebbe essere posizionata all’interno di questo spazio dei nomi per essere caricata automaticamente dal meccanismo di caricamento automatico basato su Composer di Laravel.

Ecco un esempio di come potresti dichiarare uno spazio dei nomi in un controller Laravel:

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class MyController extends Controller
{
    // Controller methods
}

In questo esempio App\Http\Controllers è il namespace e MyController è una classe all’interno di tale spazio dei nomi. Quando utilizzi la parola chiave use, puoi importare classi da altri spazi dei nomi senza dover fare riferimento al relativo spazio dei nomi completo. I namespace vengono dichiarati all’inizio dei file PHP utilizzando la parola chiave namespace seguita dal nome dello namespace. Laravel segue lo standard PSR-4 per il caricamento automatico delle classi, quindi la struttura dello spazio dei nomi spesso riflette la struttura delle directory della tua applicazione.

Come si usano i Namespace

La parola chiave use ci permette di accorciare il namespace. Vediamo questo esempio:

namespace App\Models;
 
class File {

    public function TheMethodThatGetsFiles()
    {
    }
}

Nei controller si usano normalmente i namespace

app/controllers/FileController.php

namespace App\Controllers;

use App\Models\File;

class FileController {
    public function someMethod()
    {
        $file = new File();
    }
}

Quando inserisci una classe in un namespace, per accedere a una qualsiasi delle classi integrate, devi chiamarle da Root Namespace

Ad esempio $stdClass = new stdClass(); diventa $stdClass = new \stdClass();

Newsletter sull’Innovazione
Non perderti le notizie più importanti sull'Innovazione. Iscriviti per riceverle via e-mail.

Per importare altri namespace:

use App\Models\File;

Ciò ti consentirà di utilizzare la classe File senza il prefisso namespace.

Devi mettere il namespace in alto per comprendere facilmente le dipendenze del file. Successivamente, esegui il composer dump-autoload. Se si desidera accedere a FileController, sarà necessario definire route e specificare lo spazio dei nomi completo che lo reindirizzerà al metodo specificato del controller.

Route::get('file', 'App\\Controllers\\FileController@TheMethod');

Dichiarazione di namespace

La parola chiave use consente agli sviluppatori di abbreviare il namespace.

use <namespace-name>;

Il namespace predefinito utilizzato in Laravel è App, tuttavia un utente può modificare il namespace in modo che corrisponda all’applicazione Web. La creazione di un namespace definito dall’utente con il comando artisan è come segue:

php artisan app:name SocialNet

Il namespace, una volta creato, può includere varie funzionalità che possono essere utilizzate nei controller e in varie classi.

Letture Correlate

Ercole Palmeri

Newsletter sull’Innovazione
Non perderti le notizie più importanti sull'Innovazione. Iscriviti per riceverle via e-mail.