⊗ppOpIfInr 65 of 107 menu

Interfacce in OOP in PHP

Come già sapete, le classi astratte rappresentano un insieme di metodi per i propri discendenti. Una parte di questi metodi può essere implementata nella classe stessa, mentre una parte dei metodi può essere dichiarata astratta e richiedere l'implementazione nelle classi figlie.

Immaginiamo una situazione in cui la tua classe astratta rappresenti solo un insieme di metodi pubblici astratti, senza aggiungere metodi con implementazione.

In pratica, la tua classe padre descrive l'interfaccia dei discendenti, cioè l'insieme dei loro metodi pubblici, obbligatori per l'implementazione.

A cosa ci serve: per commettere meno errori durante la programmazione - descrivendo tutti i metodi necessari nella classe padre, possiamo essere sicuri che tutti i discendenti li implementino effettivamente.

Quando aiuta: supponiamo di creare la nostra classe padre e diverse classi figlie. Se poi dopo un po' di tempo, ad esempio, dopo un mese, decidiamo di crearne un'altra figlia, sicuramente avremo dimenticato i dettagli del nostro codice e potremmo facilmente dimenticare di scrivere l'implementazione di qualche metodo nella nuova classe figlia. Tuttavia, PHP stesso non permetterà di perdere il metodo - e mostrerà semplicemente un errore.

Lo stesso vale per un altro programmatore che lavora al tuo progetto. Supponiamo che il codice della classe padre sia stato scritto da te, e poi il tuo collega decida di creare un'altra classe figlia. Anche il tuo collega non riuscirà a perdere un paio di metodi.

C'è, tuttavia, un problema: in pratica abbiamo creato la nostra classe padre per scriverci metodi pubblici astratti, ma noi stessi o il nostro collega abbiamo la possibilità di aggiungere accidentalmente in questa classe un metodo non pubblico o non astratto.

Supponiamo di voler fisicamente vietare nel padre metodi diversi da quelli astratti pubblici. In PHP, per questo, invece delle classi astratte, si possono usare le interfacce.

Le interfacce rappresentano classi, i cui tutti i metodi sono pubblici e privi di implementazione. Il codice dei metodi deve essere implementato dalle classi che ereditano (implementano) le interfacce.

Le interfacce vengono dichiarate come le classi normali, ma utilizzando la parola chiave interface al posto della parola class.

Per l'ereditarietà dalle interfacce si usa una terminologia leggermente diversa: si dice che le classi non ereditano dalle interfacce, ma le implementano. Di conseguenza, al posto della parola extends si deve usare la parola chiave implements.

Non si può creare un oggetto di un'interfaccia. Tutti i metodi dell'interfaccia devono essere dichiarati come public e non devono avere un'implementazione. Un'interfaccia può avere solo metodi, non proprietà. Non si può nemmeno creare un'interfaccia e una classe con lo stesso nome.

Italiano
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesia日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Utilizziamo i cookie per il funzionamento del sito, l'analisi e la personalizzazione. I dati vengono elaborati in conformità con la Politica sulla privacy.
accetta tutto personalizza rifiuta