factory pattern php

Factory Pattern

Tra i design pattern più comuni in PHP e degni di nota troviamo sicuramente il Factory pattern. Questo è un pattern creazionale, cioè un pattern che ci permette di creare un’istanza di una classe. Nel caso specifico, utilizzando il Factory pattern, sarà possibile ottenere un oggetto senza conosce l’esatta classe di provenienza.

In parole più semplici, quando instanziamo una classe in PHP generalmente facciamo:

Il Factory pattern prevede la separazione tra la logica di creazione e l’effettiva logica di utilizzo di una classe. Supponiamo di avere una classe che rappresenta un concetto generico, ad esempio una classe “Toy”, giocattolo:

Ora potremmo avere una serie di classi che estendono questa classe, modificandone il comportamento dei metodi o i valori degli attributi:

Bene, ora le classi CarToy e HelicopterToy ereditano i metodi della classe Toy e il costruttore che richiede il codice prodotto e un prezzo.

Per ottenere un oggetto di tipo HelicopterToy ora dovremmo fare una cosa del genere:

In questo modo avremo un’istanza della classe HelicopterToy con tutte le proprietà ereditate dalla classe Toy e delle proprietà definite al momento della generazione dell’istanza.

Ora se vogliamo ottenere un un unico metodo per ottenere un oggetto Toy definendone il tipo (Car o Helicopter) ecco che entra in gioco il Factory pattern. Definiamo una classe ToyFactory, in cui definiamo una logica secondo cui restituiamo l’istanza di una o l’altra classe. Questa logica può variare a seconda dello scenario e dai casi di utilizzo. Nel nostro caso ci limiteremo a passare un argomento che definisce il tipo di giocattolo che vogliamo ottenere:

Come accennato, questa logica può variare a seconda dei casi di utilizzo, potrebbe agire ad esempio in base a una variabile d’ambiente o ad altri agenti esterni.

Tornando al nostro esempio ecco come ottenere caso un’istanza della classe CarToy:

L’oggetto $ferrari adesso avrà tutti i metodi definiti nella classe Toy e il suo attributo $name sarà ‘car’.

Scopri la nostra splendida offerta PHP, ti aspettiamo in Aula o da Remoto con il nostro corso di 26 ore OOP e con il nostro percorso di 26 ore dedicato a PHP per Principianti!

Scopri tutte le nostre risorse FREE di PHP! Ricorda prima di passare allo studio di un framework come Laravel è determinante possedere un’ottima preparazione di PHP!

Leave a reply