defstudio / enum-features
一个简单的特性,用于使用枚举和Laravel Pennant启用功能系统
v2.0.5
2024-04-26 13:51 UTC
Requires
- php: ^8.3
- illuminate/support: ^v11.4.0
- laravel/pennant: ^v1.7.0
- spatie/laravel-package-tools: ^1.16.4
Requires (Dev)
- larastan/larastan: ^v2.9.5
- laravel/pint: ^v1.15.1
- nunomaduro/collision: ^v8.1.1
- orchestra/testbench: ^v9.0.4
- pestphp/pest: ^v2.34.7
- pestphp/pest-plugin-laravel: ^v2.3.0
- phpstan/extension-installer: ^1.3.1
- phpstan/phpstan-deprecation-rules: ^1.1.4
- phpstan/phpstan-phpunit: ^1.3.16
- spatie/invade: ^2.0
README
一个简单的特性,用于使用枚举启用功能系统
if(AppFeature::welcome_email->active()){ Mail::to($newUser)->send(new WelcomeEmail($newUser)); }
安装
您可以通过composer安装此包
composer require defstudio/enum-features
使用方法
您可以使用DefinesFeatures
特性在任何枚举上启用功能
use DefStudio\EnumFeatures\EnumFeatures; enum AppFeature { use DefinesFeatures; // ← simply add this case multi_language; case impersonate; case welcome_email; /* Feature resolution */ //with a single method: protected function resolve(Authenticatable $user = null) { match($this){ case self::multi_language => true, case self::impersonate => $user->isAdmin(), default => false; } } //or with a dedicated method: protected function resolveImpersonate(Authenticatable $user = null){ return $user->isSuperAdmin(); } }
并应在您的Provider中注册
class AppServiceProvider extends ServiceProvider { //.. public function boot(): void { AppFeature::defineFeatures(); } }
然后,在代码中,可以检查功能是否启用
if(AppFeature::multi_language->active()){ //.. multi language specific code }
更详细的文档可在以下地址找到
https://docs.defstudio.it/enum-features
测试
composer test
变更日志
请参阅变更日志以了解最近的变化。请关注我们的Twitter@FabioIvona获取更多更新。
贡献
请参阅贡献指南以获取详细信息。
安全漏洞
请参阅我们的安全策略了解如何报告安全漏洞。
鸣谢
许可协议
MIT许可协议(MIT)。请参阅许可文件以获取更多信息。
支持我们
我们坚信开源是我们所有业务的基础,并试图通过帮助其他项目成长以及开发和维护我们的包来为开源做出贡献。您可以通过在github上赞助我们来支持我们的工作!