Concept Flow - Why traits are needed
Class A
Class B
Need shared methods
Use Traits
Reuse code in multiple classes
Traits allow sharing methods across classes without using inheritance, solving code reuse problems.
<?php trait Logger { public function log($msg) { echo $msg . "\n"; } } class User { use Logger; } $user = new User(); $user->log("User created"); ?>
| Step | Action | Evaluation | Result |
|---|---|---|---|
| 1 | Define trait Logger with method log() | Trait Logger created | Logger trait ready |
| 2 | Define class User using trait Logger | User class includes Logger methods | User class has log() |
| 3 | Create instance $user of User | $user is an object of User | Object $user created |
| 4 | Call $user->log('User created') | log() method runs | Output: User created |
| 5 | End of script | No more code | Execution stops |
| Variable | Start | After 1 | After 2 | After 3 | Final |
|---|---|---|---|---|---|
| $user | undefined | undefined | undefined | User object | User object |
Traits let PHP classes reuse methods without inheritance.
Use 'trait TraitName { }' to define.
Use 'use TraitName;' inside classes to include.
Solves code reuse when multiple classes need same methods.
Avoids single inheritance limits.