Η php από την έκδοση 5.4 και μετά έχει τη δυνατότητα χρήσης των traits, η οποία είναι άλλη μια μέθοδος αντικειμενικου προγραμματισμού. Η PHP ως γλώσσα προγραμματισμού ανήκει στη κατηγορία single inheritance languages, αυτό σημαίνει ότι μία κλάση δεν μπορεί  κληρονομήσει μεθόδους παρά μόνο από μιά άλλη.

Τα traits είναι κλάσεις από τις οποίες δεν μπορούν να δημιουργηθούν στιγμιότυπα (objects) αλλά είναι χρήσιμα στην εξάλειψη του συχνά επαναλαμβανόμενου κώδικα. Μοιάζει με abstract class αλλά η κύρια η διαφορά είναι δεν χρειάζεται να γίνει implementation της κληρονομικότητας σε κάθε χρήση, όπως είναι υποχρεωτικό σε μία abstract class.

Η διαφορά με ένα interface είναι ότι εκεί απλά χρειάζεται να δηλώσουμε τις μεθόδους για το πως θα συμπεριφέρεται ένα object, αλλά εδώ απλά μπορούμε να προσθέσουμε και τη δυνατότητα πραγματικής λειτουργίας μέσα σε κάθε μέθοδος μια κλάσης τύπου treat.

Τρόπος χρήσης 

trait message 
{
public function hello()
{ return "hello"; } }
class user()
{   use message; }
$user = new user();

$user->hello();

Πραγματικό Παράδειγμα

Ένα παράδειγμα πραγματικής χρήσης είναι στο πακέτο ανοιχτού κώδικα Laravel Cashier όπου δίνει τη δυνατότητα δημιουργίας subscriptions σε web εφαρμογές. Απλά μπορούμε να δούμε τη χρήση ενός trait αν εξετάσουμε το πηγαίο κώδικα απλά παρατηρήστε

https://github.com/laravel/cashier/blob/9.0/src/Billable.php

Έχει δημιουργήσει ένα trait Billable με βασικές μεθόδους

Charge, Refund, hasCardOnFile, tab, invoiceFor, newSubscription, onTrial

Πότε θα χρησιμοποιούμε  treats

Ο πιο κατάλληλη χρήση μια τέτοια κλάσης είναι όταν θέλουμε να χρησιμοποιήσουμε ένα κομμάτι κώδικά σε πόλλες κλάσεις οι οποίες δεν  συσχετίζονται μεταξύ τους άμεσα. Μόνος τα Trait μπορουν γίνουν mixin  σε διαφορετικά μέρης στην ιεραρχία των κλάσεων.