mxrck / laravel-dboptions
该包最新版本(v1.0.4)没有可用的许可证信息。
为您的laravel项目创建基于数据库的选项
v1.0.4
2019-08-20 23:43 UTC
Requires
- php: >=7.1
Requires (Dev)
- orchestra/testbench: ~3.0
README
使用数据库存储键/值选项,带有预加载功能和上下文对象,并回退到全局选项
安装
composer require mxrck/laravel-dboptions
用法
使用选项存储有两种方式,通过外观或助手
简单外观用法
如果您只需要数据库键/值来存储数据,那么您可以使用最简单的方式
// Get an option from the database or fallback to default Options::get( 'somekey', 'default value' ); // if you need to reload from database then pass a third boolean argument with true // Update or create (if not exists) an option Options::update( 'somekey', 'somevalue' ); // If you want to autoload the option then pass a third array argument like ['autoload' => true] // Check if an option is already stored in the database Options::exists( 'somekey' ); // Delete an option from the database Options::remove( 'somekey' ); // Get all options as array Options::all(); /* this method return an array like this */ $all_options = [ 'somekey' => [ 'value' => 'THE_VALUE_STORED', 'autoload' => false, 'public' => false ], ... ]; // Get all public options as array Options::public(); // same as before, but only public options
简单助手用法
// Get options instance $options = option(); /* With $options you have all facade methods available to use */ /* * options()->get(...); options()->update(...); options()->exists(...); ... */ // Get and option from database or fallback to default option('somekey') // Update or create (if not exists) an option option_update( 'somekey', 'somevalue' ); // Check if option exists option_exists( 'somekey' ); // Delete an option option_remove( 'somekey' );
上下文用法
这个特性是由 @atxy2k 提出的
如果您需要更高级的用法,例如为每个用户设置选项,回退到默认选项系统或回退到默认值,则可以使用选项上下文。这些上下文使用多态关系来创建特定选项,您可以将任何模型转换为可选项。
您需要实现 OptionableInterface,并在要转换为可选项的模型中使用 OptionableTrait,如下所示。
// User.php use Illuminate\Database\Eloquent\Model; class User extends Model implements OptionableInterface { use OptionableTrait; }
如果您自定义了您的形态映射,您需要重写模型中的一个额外方法
// Provider use Illuminate\Database\Eloquent\Relations\Relation; Relation::morphMap([ 'user' => 'App\User' ]); // User.php use Illuminate\Database\Eloquent\Model; class User extends Model implements OptionableInterface { use OptionableTrait; public function getType(): string { return 'user'; } }
现在您可以使用带有可选项上下文的外观或助手,如下所示
$user = User::find(10); $user->option( 'somekey' ); // By default, from an optionable instance you can call options with the optionable context // Or you can use the facade and helper with custom context $value = Option::context( option_context( $user ) )->get( 'somekey' ); // Or $value = Option::context( Context::make( $user ) )->get( 'somekey' ); // Or $value = Option::context( $user )->get( 'somekey' ); // Or $value = option( option_context( $user ) )->get( 'somekey' ); // Or $value = option( $user )->get( 'somekey' );
一些示例
option( $user )->get( 'some_option' ); // return null option( 'some_option'); // return null option( $user )->update( 'some_option', 'user_value' ); // return 'user_value' option( $user )->get( 'some_option' ); // return 'user_value' option()->update( 'some_option', 'system_value' ); // return 'system_value' option( 'some_option' ) // return 'system_value' echo 'System: ' option( 'some_option' ) . ' User: '. option( $user )->get( 'some_option' ); // System: system_value User: user_value // Fallback example: option()->update( 'color', '#fffff' ); option( option_context( $user ) )->get( 'color' ); // return null option( option_context( $user, true ) )->get( 'color' ); // return #ffffff // Or using your model: $user->optionFallback( 'color' ); // return #ffffff // By default, context fallback is false
还有一些尚未记录的隐藏功能,但基本用法在这里
控制台
创建或更新选项
php artisan option:update {KEY} {VALUE}
获取选项
php artisan option:get {KEY}
列出所有当前选项
php artisan option:all
测试
composer test
工作进行中
尚未进行上下文测试
贡献
感谢您所有的贡献
支持我
您可以在 Twitter 上关注我,买我一杯咖啡 或 在 Patreon 上支持我
许可证
MIT 许可证(MIT)。有关更多信息,请参阅 许可证文件