Allow you to add on custom functionality to internal Laravel components - Caleb Porzio
More reading about Laravel Macroable Trait
Search for use Illuminate\Support\Traits\Macroable;
- Rule
- Translator
- Str
- Collection
- Carbon
- Arr
- UrlGenerator
- Router
- Route
- ResponseFactory
- Mailer
- UploadFile
- Response
- Request
- RedirectResponse
- JsonResponse
- TestResponse
- PresetCommand
- Filesystem
- Blueprint
- Builder
- Relation
- FactoryBuilder
- Event
- Repository
- SessionGuard
- RequestGuard
$ php artisan make ResponseMacroServiceProvider
Register ResponseMacroServiceProvider
in config/app.php
, in providers
key.
App\Providers\ResponseMacroServiceProvider::class,
In boot()
method, add the following:
Response::macro('title', function ($value) {
return Response::make(title_case($value));
});
In routes/console.php
, you can test the new response type/macro:
$this->comment(
response()->title('some random string ssAsdsad loREM ipSum')
);
$ php artisan make CollectionMacroServiceProvider
Register CollectionMacroServiceProvider
in config/app.php
, in providers
key.
App\Providers\CollectionMacroServiceProvider::class,
In routes/console.php
, you can test the new response type/macro:
collect()->ifEmpty(function (Collection $collection) {
echo 'hi, you are empty now.' . PHP_EOL;
});
collect([1, 2, 3])->ifEmpty(function (Collection $collection) {
echo 'hi, you are not empty now.' . PHP_EOL;
});