defstudio/

enum-features

一个简单的特性,用于使用枚举和Laravel Pennant启用功能系统

v2.0.5 2024-04-26 13:51 UTC

This package is auto-updated.

Last update: 2024-09-08 18:14:15 UTC


README

Latest Version on Packagist GitHub Tests Action Status GitHub Code Style Action Status Total Downloads License Twitter Follow

一个简单的特性,用于使用枚举启用功能系统

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上赞助我们来支持我们的工作!