A powerful Laravel package that provides a dynamic helper management system with an Artisan command generator. Create, organize, and access your custom helper classes effortlessly.
- π Dynamic Helper Resolution - Automatically resolves helper classes on-demand
- π― Artisan Command Generator - Create helpers with
php artisan make:helper - π Nested Helper Support - Organize helpers in subdirectories (e.g.,
Store/CreateHelper) - π Singleton Pattern - Efficient instance caching for better performance
- π¨ Laravel-Style Output - Beautiful command output matching Laravel's conventions
- π Auto-Discovery - Service provider automatically registered
- π‘ Dual Access Patterns - Use
moneyHelper()orhelpers()->moneyHelper()
- PHP >= 8.1
- Laravel >= 10.0
Install the package via Composer:
composer require l0n3ly/laravel-dynamic-helpersThe service provider will be automatically discovered by Laravel.
php artisan make:helper MoneyHelperThis creates app/Helpers/MoneyHelper.php:
<?php
namespace App\Helpers;
use L0n3ly\LaravelDynamicHelpers\Helper;
class MoneyHelper extends Helper
{
public function format($amount)
{
return number_format($amount, 2);
}
public function toMinor($amount)
{
return $amount * 100;
}
}You can access your helper in two ways:
// Direct global function (recommended)
moneyHelper()->format(1000); // "1,000.00"
moneyHelper()->toMinor(1500); // 150000
// Via helpers() function
helpers()->moneyHelper()->format(2000); // "2,000.00"php artisan make:helper PermissionHelper<?php
namespace App\Helpers;
use L0n3ly\LaravelDynamicHelpers\Helper;
class PermissionHelper extends Helper
{
public function can($permission)
{
return auth()->user()->hasPermission($permission);
}
}Usage:
if (permissionHelper()->can('edit-posts')) {
// User can edit posts
}Create organized helper structures:
php artisan make:helper Store/CreateHelper
php artisan make:helper Store/Product/UpdateHelperThis creates:
app/Helpers/Store/CreateHelper.phpapp/Helpers/Store/Product/UpdateHelper.php
Access them using flattened camelCase:
// Store/CreateHelper -> storeCreateHelper()
storeCreateHelper()->create($data);
// Store/Product/UpdateHelper -> storeProductUpdateHelper()
storeProductUpdateHelper()->update($id, $data);<?php
namespace App\Http\Controllers;
use App\Http\Controllers\Controller;
class OrderController extends Controller
{
public function store(Request $request)
{
$amount = moneyHelper()->toMinor($request->amount);
if (permissionHelper()->can('create-orders')) {
// Create order
}
}
}@if(permissionHelper()->can('view-reports'))
<div class="reports">
{{ moneyHelper()->format($total) }}
</div>
@endifHelpers are automatically cached as singletons:
$helper1 = moneyHelper();
$helper2 = moneyHelper();
// $helper1 and $helper2 are the same instanceHelpers can be callable:
class CalculatorHelper extends Helper
{
public function __invoke($a, $b)
{
return $a + $b;
}
}Usage:
$result = calculatorHelper(5, 10); // 15Add any methods you need:
class ApiHelper extends Helper
{
public function get($url)
{
return Http::get($url);
}
public function post($url, $data)
{
return Http::post($url, $data);
}
}php artisan make:helper HelperNamephp artisan make:helper Category/ProductHelper
php artisan make:helper Admin/User/PermissionHelperThe command automatically normalizes names:
# All of these create "MoneyHelper"
php artisan make:helper MoneyHelper
php artisan make:helper money-helper
php artisan make:helper money_helperRun the test suite:
composer testOr with PHPUnit:
vendor/bin/phpunitThis package uses Laravel Pint for code style. Format code:
./vendor/bin/pintContributions are welcome! Please feel free to submit a Pull Request.
The MIT License (MIT). Please see the License File for more information.
Divine Idehen
- Email: idehendivine16@gmail.com
- Inspired by Laravel's elegant architecture
- Built with the Laravel community in mind
Made with β€οΈ for the Laravel community