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

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

Αλλά ας συνεχίσουμε να δούμε τη διαφορά ενός trait με ένα  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  σε διαφορετικά μέρης στην ιεραρχία των κλάσεων.