Traits are a collection of reusable methods that are accessible in multiple classes. It shares code between classes that are not related by inheritance.
To access these methods in a class first need to define the trait using the use
keyword and call the method using $this
if it is not a static method otherwise use self::
.
In this tutorial, I show how you can create and use Traits in the Controller in Laravel 9.
Contents
1. Creating Trait
Syntax –Â
<?php namespace App; trait TraitName { /** Methods **/ }
Create a new folder Traits
in app/
to store all Traits.
- Create
Common.php
file. - Set namespace to
App\Traits
. - I set the trait name to
Common
. - Created 2 methods –
- fun1() – Return string response.
- status() – Return
Active
orInActive
text based on$status
value.
Completed Code
<?php namespace App\Traits; trait Common { public function fun1(){ return "Trait response"; } public function status($status = 0){ $statusText = "InActive"; if($status == 1){ $statusText = "Active"; } return $statusText; } }
2. Route
- OpenÂ
routes/web.php
 file. - Define 1 routes –
- / – Load index view.
Completed Code
<?php use Illuminate\Support\Facades\Route; use App\Http\Controllers\PagesController; Route::get('/', [PagesController::class, 'index'])->name('home');
3. Controller
- CreateÂ
PagesController
 Controller.
php artisan make:controller PagesController
- OpenÂ
app/Http/Controllers/PagesController.php
 file. - Import Common Trait –
use App\Traits\Common;
- To use it inside the class use the
use
keyword –use Common;
. - Create a method –
- index() – Calling trait function using
$this
–
- index() – Calling trait function using
$this->fun1(); $this->status(1);
and assign to the $data
Array. Load index
view and pass $data
Array.
Completed Code
<?php namespace App\Http\Controllers; use Illuminate\Http\Request; use App\Traits\Common; // Trait class PagesController extends Controller { use Common; // Trait public function index(){ $data['value1'] = $this->fun1(); // Call trait method $data['value2'] = $this->status(1); // Call trait method return view('index',$data); } }
4. View
Create index.blade.php
 file in resources/views/
 folder.
Display $value1
and $value2
data.
Completed Code
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <title>How to create and use Traits in Laravel</title> </head> <body> {{ $value1 }} <br> {{ $value2 }} </body> </html>
5. Output
6. Conclusion
Use Traits to perform any reusable operation across multiple classes like – file upload, calculations, database manipulation, etc.
You can import more than one trait in your controller and use it.
If you found this tutorial helpful then don't forget to share.