Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

Laravel, il pattern di base: Facade

Analizziamo il funzionamento di Facade, il design pattern strutturale di base del framework PHP Laravel. Si tratta di uno degli schemi progettuali più utilizzati nella programmazione orientata agli oggetti, il suo impiego renderà il codice più leggibile e riutilizzabile.
Analizziamo il funzionamento di Facade, il design pattern strutturale di base del framework PHP Laravel. Si tratta di uno degli schemi progettuali più utilizzati nella programmazione orientata agli oggetti, il suo impiego renderà il codice più leggibile e riutilizzabile.
Link copiato negli appunti

Dopo l'approfondimento incentrato sull'installazione del framework, concludiamo la parte di questa trattazione dedicata all’introduzione di Laravel con un contributo riguardante il più importante schema progettuale presente nel framework: il Facade Pattern. In pratica, questo design pattern viene utilizzato per tutte le funzionalità principali del framework e rappresenta la modalità più rilevante per creare componenti condivisi; per questa ragione, prima di procedere sarà necessario comprendere appieno il suo funzionamento.

Il Facade Pattern

Il Facade Pattern è un design pattern strutturale diffusamente utilizzato nella programmazione ad oggetti. Il termine “Facade” può essere tradotto come "facciata", presto capiremo il perché. Questo pattern prevede la creazione un oggetto, il facade object, che fornisce un'API (Application Programming Interface) semplificata per una porzione di codice di dimensioni maggiori.

Tale meccanismo semplifica notevolmente le sessioni di sviluppo perchè permette di realizzare software caratterizzati da codici più facili da leggere e da utilizzare, riduce la catena delle dipendenze e facilita i test unitari in quanto esiste un unico componente aggregato. Il Facade Pattern è adottato frequentemente anche nei sistemi particolarmente complessi e quando i vari componenti software presentano parecchie interdipendenze tra di loro.

Esistono due altri pattern per molti versi simili al Facade che spesso vengono confusi con esso: l’Adapter Pattern e il Decorator Pattern. Nel primo caso, l’oggetto Adapter converte un'interfaccia per la programmazione in un’altra in base a cosa il consumer o l’utilizzatore si aspetta; nel secondo caso l’API originale viene arricchita o decorata per aggiungerne funzionalità avanzate o mancanti.

Facade Pattern in Laravel

Spostando l’attenzione su Laravel, gli oggetti facade permettono di accedere, da qualsiasi punto dell’applicazione, a quasi tutti gli oggetti disponibili nel container applicativo dei componenti, il ServiceContainer. Questo container permette al core di Laravel di gestire la dependency injection in maniera trasparente e funge da collante tra i vari componenti.

Per utilizzare una classe facade quando disponibile basterà invocarne staticamente i metodi dopo la necessaria inclusione. Non è obbligatorio specificare il namespace completo delle classi facade in quanto Laravel sfrutta degli alias per rimappare i percorsi completi in nomi più facili da ricordare. Di seguito viene proposto un esempio di utilizzo di una delle facade più importanti: Request:

<?php
namespace App\Http\Controller
use Request;
class TestController extends Controller
{
	public function testMethod() {
		echo Request::method();
		echo Request::url();
	}
}

In questo breve esempio sfruttiamo la classe Request, mappata tramite alias verso Illuminate\Support\Facades\Request, per recuperare metodo HTTP e URL della richiesta. E’ interessate però sapere che all’interno del file relativo (presente nella cartella vendor), non è presente nessun metodo statico method() o url().

L’unico metodo disponibile è getFacadeAccessor che determina il nome dell’oggetto presente nel ServiceContainer sul quale invocare il metodo relativo. Grazie al magic method di PHP __callStaticMethod è infatti possibile invocare il metodo sull’istanza dell’oggetto relativo che nel caso di Request è Illuminate\Http\Request.

Consultando questa pagina sarà possibile reperire l’elenco dei facade disponibili in Laravel e dei quali verrà fatto largo uso nei prossimi articoli.

Nel corso della guida e negli esempi che mano a mano allegheremo, faremo ricorso a tali oggetti con una certa regolarità e utilizzeremo questo pattern per creare una classe Facade da utilizzare più volte.


Ti consigliamo anche