sven / file-config
使用磁盘上的文件存储和读取配置值
Requires
- php: ^8.0
- ext-json: *
Requires (Dev)
- league/flysystem: ^3.0
- phpunit/phpunit: ^9.0 | ^10.0
README
文件配置
此软件包提供了一种持久配置存储,以扁平文件的形式,并具有易于使用和理解的API。如果配置文件需要存储在用户区域,或者用户被允许手动编辑它,那么这将是完美的。
安装
您需要遵循几个简单的步骤来安装此软件包。
下载
通过 composer
$ composer require sven/file-config:^3.1
或将软件包添加到您的 composer.json
依赖项中,并在命令行上运行 composer update sven/file-config
来下载软件包
{ "require": { "sven/file-config": "^3.1" } }
可用驱动程序
您还可以编写自己的驱动程序来在自己的应用程序中使用。要编写自己的驱动程序,请参阅此文档中的 编写自己的驱动程序。
使用方法
要开始使用,请构造一个 \Sven\FileConfig\Store
的新实例,并提供一个 \Sven\FileConfig\File
对象和一个实现 \Sven\FileConfig\Drivers\Driver
接口的对象。我们将使用预安装的 Json
驱动程序作为示例。
use Sven\FileConfig\File; use Sven\FileConfig\Store; use Sven\FileConfig\Drivers\Json; $file = new File('/path/to/file.json'); $config = new Store($file, new Json());
您可以通过 get
、set
和 delete
方法与您创建的 $config
对象进行交互。
示例
让我们看看一些示例。
从文件中获取值
要从配置文件中检索值,请使用 get
方法。假设我们的(美化后的)JSON配置文件如下所示
{ "database": { "name": "test", "host": "localhost", "user": "admin", "password": "root" } }
我们可以获取整个 database
数组
$config->get('database'); // ~> ['name' => 'test', 'host' => 'localhost', 'user' => 'admin', 'password' => root']
... 或者使用点表示法获取 database.host
属性
$config->get('database.host'); // ~> 'localhost'
如果无法找到给定的键,则默认返回 null
。您可以通过向 get
方法传递第二个参数来覆盖此行为
$config->get('database.does_not_exist', 'default'); // ~> 'default'
在文件中设置值
要添加或更改配置文件中的值,您可以使用 set
方法。请注意,您必须调用 persist
方法来将您所做的更改写入文件。您还可以使用 fresh
方法来检索一个“新鲜”的 Store
实例,其中值将再次从文件中读取。
$config->set('database.user', 'new-username'); $config->persist(); $freshConfig = $config->fresh(); $freshConfig->get('database.user'); // ~> 'new-username'
在调用 persist
方法后,文件将看起来像这样
{ "database": { "name": "test", "host": "localhost", "user": "new-username", "password": "root" } }
从文件中删除条目
要从文件中删除配置选项之一,请使用 delete
方法。同样,别忘了调用 persist
将新内容写入文件!
$config->delete('database.user'); $config->persist();
{ "database": { "name": "test", "host": "localhost", "password": "root" } }
编写自己的驱动程序
您可能希望使用未包含在此软件包中的配置文件格式。幸运的是,编写驱动程序与将文件内容转换为PHP数组一样简单。
要创建驱动程序,创建一个实现 \Sven\FileConfig\Drivers\Driver
接口的类。然后向您的类中添加两个方法:import
和 export
。import
方法将接收文件内容作为参数,并期望返回一个PHP数组。
export
方法正好相反:它接收一个PHP数组,并期望返回文件的新内容(作为字符串)。要详细了解这是如何工作的,请参阅预安装的 json
驱动程序。
贡献
所有贡献(拉取请求、问题和功能请求)都受到欢迎。不过,请首先阅读CONTRIBUTING.md。查看贡献者页面了解所有贡献者。
许可证
sven/file-config
采用MIT许可证(MIT)。有关更多信息,请参阅许可证文件。