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)。有关更多信息,请参阅许可证文件。
