I Traits (tratto in italiano), sono implementati a partire da PHP 5.4, e sono realizzati quale metodo per il riuso del codice.
Il sistema dell'ereditarietà della classi di PHP permette ad un classe genitrice, o superclass, di avere zero, una o più classi figlie, o subclass. Al contrario ogni classe può essere figlia di al più una classe genitrice. Alcune delle limitazioni dovute a questo tipo di gestione dell'ereditarietà, per altro molto diffusa in diversi linguaggi di programmazione, possono essere ridotte grazie ai Trait, che permettono il libero riutilizzo di insiemi di metodi in classi diverse appartenenti a diverse gerarchie.
Un Trait è per certi versi simile ad una classe, ma andrebbe utilizzato solo per raggruppare funzionalità di granularità fine e in modo consistente. Un Trait diversamente da una classe non può essere istanziato, ma è un'aggiunta all'ereditarietà tradizionale che permette una composizione orizzontale di comportamenti; ossia l'applicazione di membri della classe senza necessitare dell'ereditarietà.