l0n3ly/laravel-dynamic-helpers
最新稳定版本:v1.1.0
Composer 安装命令:
composer require 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.
README 文档
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
统计信息
- 总下载量: 49
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 4
- 点击次数: 2
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2025-11-23