judahnator/laravel-option

一个简单的Laravel选项包

v1.0.0 2018-10-12 17:24 UTC

This package is auto-updated.

Last update: 2024-09-13 10:51:10 UTC


README

pipeline status

这是一个为Laravel提供键=》值的选项存储的简单包。

这个包受到了WordPress get_option()功能的启发。如果您对构建非Laravel实现感兴趣,请查看我的 judahnator/option 包。这是一个简单的键/值存储,用于保持基本站点设置的持久性,特别是那些太频繁更改以至于无法添加到env文件,但又不足以创建整个应用程序模型的设置。

安装

安装相对简单。只需通过composer要求此包。

composer require judahnator/laravel-option

您还需要发布一些资源。运行 php artisan vendor:publish --tag=config 命令,并按照那里的说明进行发布。

最后,您需要配置您想要存储选项的方式。打开新创建的 config/options.php 文件,并查看那里的选项。以下是每个驱动选项如何工作的基本概述。

缓存

使用Laravel缓存子系统。您的选项将在您清除应用程序缓存之前持续存在。

数据库

使用数据库表存储配置值。您需要发布并运行迁移才能使用此功能。运行 php artisan vendor:publish --tag=migrations 然后运行 php artisan migrate

JSON

将所有选项存储在一个扁平的JSON文件中。为了使用此驱动程序,您需要创建一个选项文件,并将“options_file”设置在该文件中,设置为其实际位置。

强烈建议将选项文件排除在版本控制之外。也许可以有一个 'options.json.example' 文件作为模板,将 'options.json' 文件放入您的gitignore文件中。

内存

100%内存驱动。选项在重新加载后将不会持续存在。这主要用于原型设计或调试。

使用

使用非常简单。

  • 获取选项
    • \Option::get('foo', '如果找不到foo的默认可选值')
  • 检查选项是否存在
    • \Option::has('foo')
  • 设置(或覆盖)选项
    • \Option::set('foo', 'foos value')
  • 删除选项
    • \Option::delete('foo')

出于方便起见,我还添加了一些辅助函数。它们只是上面函数的别名,但您也可以自由使用它们。

  • delete_option($key)
  • get_option($key, $default)
  • has_option($key)
  • set_option($key, $value)

您还可以通过Artisan命令与库进行交互,这有助于自动化和其他CLI端点。以下是一些示例:

# Deletes the option if it exists, throws an error if not
php artisan option:delete option_to_delete;

# Prints 'Yes' or 'No'
php artisan option:has my_option;

# Prints the value of the option.
# If the option is not a string the value will be "print_r"'d
php artisan option:get super_option

# Sets the value of an option
php artisan option:set some_option some_value

自定义驱动程序

如果您不喜欢任何默认驱动程序并想使用自己的,没问题!这样做的方法相当简单。

创建您的“驱动程序”,这是一个实现 \judahnator\Option\OptionInterface 接口的类。该接口定义了所有必需的函数。如果您需要起点,可以扩展 \judahnator\LaravelOption\Drivers\MemoryDriver 类。查看 \judahnator\LaravelOption\Drivers\JsonFileDriver 了解如何做到这一点。

一旦您编写了驱动程序,您需要将其添加到配置文件中。对于“driver”选项,添加到您的类的完整路径。例如

[
    // ...
    
    'driver' => \Path\To\Custom\Driver::class,
    
    // ...
]