kenarkose/settlement

此包已被废弃,不再维护。未建议替代包。

具有JSON驱动器的框架无关的持久化、类型化和可分组设置

2.0.0 2016-07-28 12:51 UTC

This package is not auto-updated.

Last update: 2019-11-04 08:48:28 UTC


README

具有JSON驱动器的框架无关的持久化、类型化和可分组设置。

Build Status Total Downloads Latest Stable Version License

Settlement提供了一个简单的解决方案,支持类型和组来持久化设置。

特性

  • 持久化设置的灵活API
  • 可配置的JSON驱动器
  • 分组和类型化的设置
  • 分组和类型验证
  • Laravel 5的服务提供者
  • 一个用于易于开发的phpunit测试套件

安装

安装Settlement很简单。只需通过Composer拉取此包。

{
    "require": {
        "kenarkose/settlement": "~2.0"
    }
}

使用方法

创建一个新的JSON仓库实例,指定路径和文件名,然后就可以使用了。

use Kenarkose\Settlement\Repository\JSONRepository;

$settings = new JSONRepository('path/to', 'settings.json');

以下是定义在仓库接口中的方法列表。


$settings->set('foo', 'bar');
$settings->set('foo', 42, null, 'number');
$settings->set('foo', 'bar', 'Label', 'text', 'baz_group');

$settings->get('foo'); // 'bar'

$settings->getComplete('foo');
// ['value' => 'bar', 'label' =>'Label', 'type' => 'text', 'group' => 'baz_group']

$setting->has('foo'); // true

$setting->delete('foo');

$setting->getGroup('baz_group'); // Name of the Baz Group

$setting->setGroup('foo_group', 'Name of the Foo Group');

$setting->hasGroup('foo_group'); // true

$setting->getGroupSettings('baz_group');
// ['foo' => ['value' => 'bar', 'label' => 'Label', 'type' => 'string', 'group' => 'baz_group']]

$setting->deleteGroup('foo_group');

$setting->flush();

此外,您还可以使用JSONRepository提供的其他方法。


$setting->path(); // Returns current path
$setting->path('new/path'); // Sets a new path

$setting->filename(); // Returns current filename
$setting->filename('config.json'); // Sets a new filename

$setting->settings(); // Returns all stored settings
$setting->settings(
    ['foo' => ['value' => 'bar', 'type' => 'string', 'group' => null]
); // Replaces stored settings

$setting->groups(); // Returns all stored groups
$setting->groups(
    ['dummy' => 'Dummy Group']
); // Replaces stored groups

$setting->stored(); // Returns all stored information
$setting->stored([
    'settings' => [...],
    'groups' => [...]
]); // Replaces all stored information

$setting->load(); // Loads from current path and filename
$setting->load('new/path', 'config.json'); // Loads from new path and filename

$setting->save(); // Saves to current path and filename
$setting->save('new/path', 'config.json'); // Saves to new path and filename

更多选项,您可以参考源代码和测试,因为Settlement经过良好的测试和文档化。

Laravel用户

Settlement Service Provider for Laravel 5注册了默认的LaravelJSONRepository、门面和settings()助手。

Laravel安装

  1. 为了注册Settlement服务提供者,请将'Kenarkose\Settlement\Provider\Laravel\SettlementServiceProvider'添加到您的config/app.php文件中providers数组的末尾。

    'providers' => array(
    
        'Illuminate\Foundation\Providers\ArtisanServiceProvider',
        'Illuminate\Auth\AuthServiceProvider',
        ...
        'Kenarkose\Settlement\Provider\Laravel\SettlementServiceProvider',
    
    ),
  2. 您可以使用提供的门面来访问Settlement提供的服务。

    Settings::get('foo');
    
    Settings::set('bar', 'baz');

    为了注册门面,请将'Settings' => 'Kenarkose\Settlement\Provider\Laravel\Settings'添加到您的config/app.php文件中aliases数组的末尾。

    'aliases' => array(
    
        'App'        => 'Illuminate\Support\Facades\App',
        'Artisan'    => 'Illuminate\Support\Facades\Artisan',
        ...
        'Settings' => 'Kenarkose\Settlement\Provider\Laravel\Settings',
    
    ),
  3. 如果不喜欢门面,还提供了一个辅助函数。

    settings(); // Returns the repository
    
    // Getting a value
    settings('foo'); // is the same as settings()->get('foo');
    
    // Setting a value
    settings('foo', 'bar'); // is the same as settings()->set('foo', 'bar');
    // Other possible derivations of setting
    settings('foo', 'bar', 'string');
    settings('foo', 'bar', 'string', 'group');
  4. 最后,您可以通过发布配置文件来自定义Settlement的行为。为此,请使用以下命令。

    php artisan vendor:publish

    然后,您将在config/settlement.php路径下找到配置文件。

许可证

Settlement在MIT许可证下发布。