laravel-auto-bind maintained by mylesduncanking
Description
Abililty to automatically bind properties in Laravel
Author
Last update
2025/07/02 15:30
(dev-master)
License
Downloads
70
Tags
Laravel Auto Bind
Automatically bind route parameters to controller properties — clean, Laravel-native, and zero boilerplate.
Features
- ✅ Native route-model binding
- ✅ Reduce boilerplate in constructors
- ✅ Supports soft-deleted models
- ✅ Use custom columns (e.g.
slug) - ✅ Easy to drop into existing Laravel apps
Installation
composer require mylesduncanking/laravel-auto-bind
Basic Usage
Add the #[AutoBindProperty] attribute to each controller property you want to bind:
use MylesDuncanKing\AutoBind\AutoBindProperty;
#[AutoBindProperty]
public Client $client;
Use a Custom Column
#[AutoBindProperty(column: 'slug')]
public Client $client;
Bind Soft Deleted Records
#[AutoBindProperty(withTrashed: ['restore'])]
public Client $client;
Call bind() in Your Constructor
use MylesDuncanKing\AutoBind\AutoBind;
public function __construct()
{
AutoBind::bind($this);
}
Tip: For DRY controllers, call AutoBind::bind($this) in a base abstract controller and extend it.
Accessing Bound Properties
Use them like any class property:
public function read()
{
echo $this->client->id;
}
Or inject into a view:
return view('clients.read', array_merge(AutoBind::bound(), compact('foo')));
Full Example
routes/web.php
Route::get('clients/{client}/{tab?}', [ClientsController::class, 'read'])->name('client.read');
ClientsController.php
use App\Models\Client;
use MylesDuncanKing\AutoBind\AutoBind;
use MylesDuncanKing\AutoBind\AutoBindProperty as AutoBind;
class ClientsController extends \Illuminate\Routing\Controller
{
#[AutoBind(withTrashed: ['restore'])]
public Client $client;
public function __construct()
{
AutoBind::bind($this);
}
public function read($tab = 'index')
{
return view('clients.read', AutoBind::bound($this, compact('tab')));
}
public function update()
{
$this->client->update(
request()->validate(['name' => ['required', 'string', 'max:40']])
);
return redirect()->back();
}
public function delete()
{
$this->client->delete();
return redirect()->route('clients');
}
public function restore()
{
$this->client->restore();
return redirect()->route('clients');
}
}
Why Laravel Auto Bind?
- ✨ Less boilerplate
- 🔁 Cleaner, focused controllers
- 🧠 No new magic — pure Laravel route binding
- 🔍 Fine-tune with soft deletes and custom columns
License
MIT