windstep / l5-settings
Laravel 的持久化设置。
Requires
- illuminate/cache: ^4.2|^5|^6|^7|^8|^9
- illuminate/support: ^4.2|^5|^6|^7|^8|^9
Requires (Dev)
- laravel/framework: >=5.7
- mockery/mockery: ^1.2
- phpunit/phpunit: ^8.0
Suggests
- illuminate/database: Save settings to a database table.
- illuminate/filesystem: Save settings to a JSON file.
- dev-master
- v2.1.1
- v2.1
- v2.0
- v1.1.1
- v1.1.0
- v1.0.0
- v0.11.3
- v0.11.2
- v0.11.1
- v0.11.0
- v0.10.0
- v0.9.0
- v0.8.3
- v0.8.2
- v0.8.1
- v0.8.0
- v0.7.3
- 0.7.2
- 0.7.1
- 0.7.0
- 0.6.0
- 0.5.2
- 0.5.1
- 0.5.0
- 0.4.9
- 0.4.8
- 0.4.7
- 0.4.6
- 0.4.5
- 0.4.4
- 0.4.3
- 0.4.2
- 0.4.1
- 0.4.0
- 0.3.0
- 0.2.15
- 0.2.14
- 0.2.13
- 0.2.12
- 0.2.11
- 0.2.10
- 0.2.9
- 0.2.8
- 0.2.7
- 0.2.6
- 0.2.5
- 0.2.4
- 0.2.3
- 0.2.2
- 0.2.1
- 0.2.0
- 0.1.2
- 0.1.1
- 0.1.0
This package is auto-updated.
Last update: 2024-08-29 05:50:39 UTC
README
Laravel 的持久化、应用程序范围内的设置。
尽管包名为 l5-settings,但此包应与 Laravel 4、5、6、7 和 8 兼容(尽管某些版本没有自动测试)。
常见问题
- 类未找到错误:anlutro#38
安装 - Laravel >= 5.5
composer require anlutro/l4-settings
- 通过运行
php artisan vendor:publish --provider="anlutro\LaravelSettings\ServiceProvider" --tag="config"
发布配置文件。配置文件将让您控制要使用的存储引擎以及一些特定的存储设置。
安装 - Laravel < 5.5
composer require anlutro/l4-settings
- 将
anlutro\LaravelSettings\ServiceProvider
添加到config/app.php
文件中提供者数组。 - 通过运行
php artisan config:publish anlutro/l4-settings
(Laravel 4.x)或php artisan vendor:publish
(Laravel 5.x)发布配置文件。配置文件将让您控制要使用的存储引擎以及一些特定的存储设置。 - 可选:将
'Setting' => 'anlutro\LaravelSettings\Facade'
添加到config/app.php
文件中别名数组。
用法
您可以通过外观或通过类型提示到抽象类 anlutro\LaravelSettings\SettingStore
来访问设置存储。
<?php Setting::set('foo', 'bar'); Setting::get('foo', 'default value'); Setting::get('nested.element'); Setting::forget('foo'); $settings = Setting::all(); ?>
显式调用 Setting::save()
保存更改。
您还可以使用 setting()
辅助函数。
// Get the store instance setting(); // Get values setting('foo'); setting('foo.bar'); setting('foo', 'default value'); setting()->get('foo'); // Set values setting(['foo' => 'bar']); setting(['foo.bar' => 'baz']); setting()->set('foo', 'bar'); // Method chaining setting(['foo' => 'bar'])->save();
自动保存
在 Laravel 4.x 中,该库确保在每次应用程序关闭时自动保存任何更改。
在 Laravel 5.x 中,如果您将中间件 anlutro\LaravelSettings\SaveMiddleware
添加到 app\Http\Kernel.php
文件中的 middleware
列表中,设置将在所有 HTTP 请求结束时自动保存,但您仍需要在控制台命令、队列工作程序等中显式调用 Setting::save()
。
存储缓存
在从存储读取时,您可以选择启用缓存。
您还可以配置在写入时刷新缓存以及配置有效时间。
读取将来自存储,然后来自缓存,这可以减少存储的负载。
// Cache usage configurations. 'enableCache' => false, 'forgetCacheByWrite' => true, 'cacheTtl' => 15,
JSON 存储
您可以使用 Setting::setPath($path)
修改运行时使用的路径。
数据库存储
使用迁移文件
如果您使用数据库存储,您需要运行 php artisan migrate --package=anlutro/l4-settings
(Laravel 4.x)或 php artisan vendor:publish --provider="anlutro\LaravelSettings\ServiceProvider" --tag="migrations" && php artisan migrate
(Laravel 5.x)来生成表。
示例
例如,如果您想在同一个数据库中为多个用户/客户存储设置,可以通过指定额外的列来实现。
<?php Setting::setExtraColumns(array( 'user_id' => Auth::user()->id )); ?>
where user_id = x
现在将在检索设置时添加到数据库查询中,并且在保存新设置时,将填充 user_id
。
如果您需要更精细地控制要查询的数据,可以使用接受一个闭包作为参数的 setConstraint
方法
$query
是查询构建器实例$insert
是一个布尔值,表示查询是否为插入。如果是插入,通常不需要对$query
做任何事情。
<?php Setting::setConstraint(function($query, $insert) { if ($insert) return; $query->where(/* ... */); }); ?>
自定义存储
该软件包在底层使用 Laravel 的 Manager
类,因此如果您想以其他方式存储,则很容易添加自己的自定义会话存储驱动。您需要做的只是扩展抽象的 SettingStore
类,实现抽象方法,并调用 Setting::extend
。
<?php class MyStore extends anlutro\LaravelSettings\SettingStore { // ... } Setting::extend('mystore', function($app) { return $app->make('MyStore'); }); ?>
联系方式
如果您有任何问题或建议,请在 GitHub 上提交一个问题。
许可证
本存储库的内容在MIT 许可证下发布。