Object-Oriented PHP · Lesson 12 of 14
Traits
Reuse a small set of methods across classes with a trait.
Lesson
A trait inserts methods into a class at composition time. Traits can reduce duplication, but they also couple consuming classes to implementation details and can create method conflicts. Keep traits small and cohesive; use an interface plus composition when the behavior is a replaceable dependency.
This example shares a simple method without claiming an inheritance relationship.
Further guidance
Give an object one clear responsibility and protect state that must satisfy a rule. Prefer a small public contract and composition for replaceable collaborators; use inheritance only for a genuine subtype. Test behavior through public methods instead of relying on internal implementation details.
Practice task: Create a fresh example for Traits. Predict the result before running it, then change one input and explain why the result changes. Test a normal case and one boundary or invalid case where it applies. Compare your output with the example and note one rule you would use in a real project.
Code examples
Traits
PHP
trait HasLabel
{
public function label(string $value): string { return "Item: $value"; }
}
class MenuItem
{
use HasLabel;
}
echo (new MenuItem())->label('Home');
Expected output
Item: Home
Key points
- Reuse a small set of methods across classes with a trait.
- Protect object invariants behind a small public API.
- Prefer composition unless inheritance expresses a genuine subtype.
Your learning progress
Finish this lesson
Optional practice
PHP playground
This site does not execute learner-provided PHP code. Connect a secured PHP sandbox service before enabling code execution.
Execution is disabled. No code is sent to a server.