I trait PHP sono disponibili a partire dalla versione 5.4.0 di PHP, e sono un paradigma per creare codice riutilizzabile sfruttando una sorta di ereditarietà multipla; in genere, infatti, i linguaggi tipo OO (Object Oriented) sfruttano esclusivamente l’ereditarietà singola, cioè una classe può ereditare metodi e caratteristiche da parte di una singola altra classe. Con l’ereditarietà multipla una classe può prendere caratteristiche da più di una classe, ed il trait serve esattamente a questo scopo.
Che cos’è un trait PHP?
Un Trait per molti versi è simile ad una classe PHP, ma non è istanziabile come avviene per le classi; essa, piuttosto tende a definire un comportamento e a definirne l’ereditarietà multipla. Un Trait è in qualche modo simile a una classe PHP, ma ha solo lo scopo di raggruppare le funzionalità in modo dettagliato e coerente.
Non è possibile istanziare un trait in modo stand alone: si tratta sempre di un’aggiunta all’eredità tradizionale e consente la composizione orizzontale del comportamento; cioè, l’applicazione dei membri della classe senza richiedere l’eredità.
Un trait viene definito come una specie di classe o funzione auto-conclusiva:
trait message1 { public function msg1() { echo "Sono il messaggio 1, giusto per esempio."; } }
che poi abbiamo la possibilità di richiamare all’occorrenza mediante use:
Scopri i servizi del sito 👇
class Welcome { use message1; }
Un esempio dovrebbe chiarire il concetto, a questo punto.
Esempio di trait PHP
Abbiamo detto che un trait non è istanziabile come “stampo” di un oggetto, bensì deve essere usato da una classe mediante la clausola use; un esempio dovrebbe aiutare a capire di che cosa parliamo. Un esempio pratico permette di ridurre la duplicazione di parti di codice, cosa molto utile per mantenere la leggibilità e l’efficenza sempre elevata.
<?php trait message1 { public function msg1() { echo "Sono il messaggio 1, giusto per esempio."; } } trait message2 { public function msg2() { echo " Sono il messaggio 2, e servo a non scrivere codice inutile."; } } class Welcome { use message1; } class Welcome2 { use message1, message2; } $obj = new Welcome(); //prima istanza classe di prova $obj->msg1(); echo "<hr>"; //richiamo solo primo trait $obj2 = new Welcome2(); //altra istanza classe $obj2->msg1(); //richiamo il primo trait $obj2->msg2(); //richiamo il secondo trait ?>
Questo esempio restituirà:
Usa il codice
189ed7ca010140fc2065b06e3802bcd5
per ricevere 5 € dopo l'iscrizioneSono il messaggio 1, giusto per esempio.
Sono il messaggio 1, giusto per esempio. Sono il messaggio 2, e servo a non scrivere codice inutile.
👇 Contenuti da non perdere 👇
- Domini Internet 🌍
- Gratis 🎉
- Internet 💻
- Spiegoni artificiali 🎓
- Svago 🎈
- 💬 Il nostro canale Telegram: iscriviti
- 🟡 ##002# serve a disattivare tutte le deviazioni di chiamata
- 🟢 AD nel tennis, significato
- 🔴 Guida pratica alle dash cam