l0n3ly / laravel-dynamic-helpers
Laravel Dynamic Helpers is a package that dynamically resolves helper classes and provides an Artisan command to generate custom helpers in your app/Helpers directory, making helper management effortless and fully automated.
Installs: 13
Dependents: 0
Suggesters: 0
Security: 0
Stars: 4
Watchers: 0
Forks: 0
Open Issues: 0
pkg:composer/l0n3ly/laravel-dynamic-helpers
Requires
- php: ^8.1
- illuminate/support: ^10.0|^11.0|^12.0
Requires (Dev)
- laravel/pint: ^1.0
- orchestra/testbench: ^9.0|^10.0
- phpunit/phpunit: ^10.0|^11.0
- squizlabs/php_codesniffer: ^3.7
This package is auto-updated.
Last update: 2025-11-26 21:20:06 UTC
README
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.
โจ Features
- ๐ 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()
๐ Requirements
- PHP >= 8.1
- Laravel >= 10.0
๐ฆ Installation
Install the package via Composer:
composer require l0n3ly/laravel-dynamic-helpers
The service provider will be automatically discovered by Laravel.
๐ Quick Start
1. Create a Helper
php artisan make:helper MoneyHelper
This 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; } }
2. Use Your Helper
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"
๐ Usage Examples
Basic Helper
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 }
Nested Helpers
Create organized helper structures:
php artisan make:helper Store/CreateHelper php artisan make:helper Store/Product/UpdateHelper
This 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);
In Controllers
<?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 } } }
In Blade Templates
@if(permissionHelper()->can('view-reports')) <div class="reports"> {{ moneyHelper()->format($total) }} </div> @endif
๐ฏ Advanced Features
Instance Caching
Helpers are automatically cached as singletons:
$helper1 = moneyHelper(); $helper2 = moneyHelper(); // $helper1 and $helper2 are the same instance
Callable Helpers
Helpers can be callable:
class CalculatorHelper extends Helper { public function __invoke($a, $b) { return $a + $b; } }
Usage:
$result = calculatorHelper(5, 10); // 15
Custom Helper Methods
Add 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); } }
๐ Command Reference
Create a Helper
php artisan make:helper HelperName
Create Nested Helper
php artisan make:helper Category/ProductHelper php artisan make:helper Admin/User/PermissionHelper
Helper Name Normalization
The 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_helper
๐งช Testing
Run the test suite:
composer test
Or with PHPUnit:
vendor/bin/phpunit
๐ Code Style
This package uses Laravel Pint for code style. Format code:
./vendor/bin/pint
๐ค Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
๐ License
The MIT License (MIT). Please see the License File for more information.
๐ค Author
Divine Idehen
- Email: idehendivine16@gmail.com
๐ Acknowledgments
- Inspired by Laravel's elegant architecture
- Built with the Laravel community in mind
Made with โค๏ธ for the Laravel community