jano-may-ball / settings
Laravel 的持久化设置;anlutro/l4-settings 的分支
Requires
- php: >=5.6.4
- illuminate/support: >=4.1 <6.0
- laktak/hjson: ^2.0
Requires (Dev)
- laravel/framework: >=4.1 <6.0
- mockery/mockery: 0.9.*
- phpunit/phpunit: >=4.8, <6
Suggests
- illuminate/database: Save settings to a database table.
- illuminate/filesystem: Save settings to a JSON file.
This package is not auto-updated.
Last update: 2024-09-23 06:29:40 UTC
README
为 Laravel 提供持久、应用程序范围内的设置。是 anlutro/laravel-settings 的分支。现在支持使用 .hjson 文件。
尽管包名如此,此包与 Laravel 5.x 兼容!
常见问题
- 找不到类错误: 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()
。
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 打开一个问题。
许可
本存储库的内容遵循GNU通用公共许可证v3.0发布。