jlis / judge
Judge 处理 Laravel 的功能和值切换/标记。
Requires
- php: >=5.6.0
- illuminate/support: 5.*
- symfony/expression-language: ~2.7|~3.0
Requires (Dev)
- mockery/mockery: ^0.9.5
- phpunit/phpunit: 4.*
- scrutinizer/ocular: ~1.3
Suggests
- predis/predis: Allows reading the configuration from Redis
README
轻松切换/决定功能和值的简单方法。
安装
首先,通过 Composer 拉取包。
composer require jlis/judge
然后,在 app/config/app.php
中包含服务提供者。
'providers' => [ Jlis\Judge\JudgeServiceProvider::class, ];
为了方便,在此文件的底部添加一个外观别名
'aliases' => [ 'Feature' => Jlis\Judge\Feature::class, 'Value' => Jlis\Judge\Value::class, ];
使用发布命令将包配置复制到您的本地配置
php artisan vendor:publish
功能配置
功能配置存储在
app/config/features.php
功能 是指某种既可以是开启也可以是关闭的状态,并且应该仅用于此类切换。让我们看看
'show_memory_usage' => [ [ 'value' => true, 'filters' => ['debug:true'], ], ],
功能名称为 show_memory_usage
,如果 "debug" 投票者返回 true,则应返回 true(它检查是否启用了调试模式,请参阅 DebugVoter.php)
请注意,如果没有定义其他值,功能 的默认值始终是 false。
功能配置示例
没有过滤器的简单功能(注意值也可以是字符串,如 "true"、"on" 或 "1",它将被转换为布尔值)
'enable_captcha' => [ [ 'value' => true, ], ],
具有多个过滤器以 AND 条件链式连接的功能
'enable_captcha' => [ [ 'value' => true, 'filters' => ['env:production', 'expression_language:user==null'], ], ],
具有多个过滤器以 OR 条件链式连接的功能
'enable_captcha' => [ [ 'value' => true, 'filters' => ['expression_language:user==null'], ], [ 'value' => true, 'filters' => ['env:production'], ], ],
具有 否定 过滤器的功能
'enable_debug_output' => [ [ 'value' => true, 'filters' => ['!env:production'], ], ],
值配置
值配置存储在
app/config/values.php
然而,值 总是返回一个值(哇),例如字符串或数字等
'greeting' => [ [ 'value' => 'Hello my lady!', 'filters' => ['expression_language:user.getGender()=="female"'], ], [ 'value' => 'Hello sir.', ], ]
该值的名称为 greeting
。如果表达式投票者返回 true,则应返回 "Hello my lady!"(假设给定的用户不为 NULL,并且它是女性)。否则,它应返回 "Hello sir."(对于性别猜测表示歉意)
(ExpressionVoter.php 使用 Symfony 表达式语言来检查给定的表达式是否为 true)
值配置示例
没有过滤器的简单值
'package_price' => [ [ 'value' => 10.00, ], ],
具有一个过滤器和默认值的值
'package_price' => [ [ 'value' => 00.00, 'filters' => ['expression_language:user.hasPlan("premium")'], ], [ 'value' => 10.00, ], ],
具有多个过滤器以 AND 条件链式连接并具有默认值的值
'package_price' => [ [ 'value' => 5.00, 'filters' => ['expression_language:user.getRegisterDays() >= 365', 'made_at_least_one_purchase'], ], [ 'value' => 10.00, ], ],
投票者
实际投票者可以在此注册
app/config/judge.php
投票者包含决定给定过滤器是否应返回 true 或 false 的逻辑。这决定了功能是 开启 还是 关闭,或者值应根据其配置返回什么。
适配器
默认情况下,Judge 使用 Laravel 配置来读取功能和值。您可以选择 config、redis 和 cache 适配器。
app/config/judge.php
如果您想添加自己的适配器,请这样做。只需实现 AdapterInterface。
用法
在您的控制器中,您可以这样做,例如...
$greeting = Value::decide('greeting', $this->getUser()); echo $greeting;
或者这样
if (Feature::decide('show_memory_usage', Auth::user())) { echo 'Memory usage: ' . memory_get_usage(); }
待定
- 熔断器