PHP OOP Traits
🧩 PHP OOP Traits
In PHP OOP Traits allow you to reuse code across multiple classes.
They solve a major limitation in PHP:
PHP does NOT support multiple inheritance
(a class cannot extend more than one parent class)
Traits allow us to “mix in” methods from multiple places.
1️⃣ What is a Trait?
A trait is like a mini-class containing methods (and properties) that can be reused in multiple classes.
Syntax:
2️⃣ Using Multiple Traits in One Class
3️⃣ Traits with Properties
4️⃣ Traits with Same Method Names (Conflict Resolution)
If two traits have same method name → PHP throws conflict.
We solve it with insteadof and as.
Example:
5️⃣ Trait + Class Inheritance Together
6️⃣ Traits Inside Traits (Trait Composition)
7️⃣ Traits Cannot Be Instantiated
You cannot do:
Traits are not classes, only reusable code blocks.
8️⃣ Practical Use Case – Logging System
🧠 Traits vs Interfaces vs Inheritance
| Feature | Trait | Interface | Inheritance |
|---|---|---|---|
| Method body | ✔ Yes | ❌ No (only declare) | ✔ Yes |
| Properties | ✔ Yes | ✔ (constants only) | ✔ Yes |
| Multiple | ✔ Yes (multi-trait) | ✔ Yes | ❌ Only one parent |
| Purpose | Reuse code | Define rules | Create structure |
🎯 Summary
| Concept | Meaning |
|---|---|
| Trait | Reusable set of methods/properties |
| use | Include trait inside class |
| insteadof | Resolve trait method conflict |
| as | Alias trait method |

