miladrahimi/phpconfig

该软件包已被废弃且不再维护。未建议替代软件包。

PHP配置工具

v2.0 2018-09-09 12:46 UTC

This package is auto-updated.

Last update: 2022-10-29 02:06:58 UTC


README

Build Status

PhpConfig

PHP配置工具

概述

PhpConfig 是一个最小的软件包,用于向您的PHP项目添加配置工具。它提供了不同类型的配置存储库,例如运行时数组、PHP文件、PHP文件目录、JSON文件和JSON文件目录。

安装

在您项目的根目录中运行以下命令

composer require miladrahimi/phpconfig

入门

首先,您需要向 PhpConfig 提供配置数据。它支持不同类型的存储库,如 PHP 文件、JSON 文件,您可以使用您感兴趣的类型。

例如,我们使用数组存储库作为配置数据源。以下示例演示了如何将数据数组用作数据源,如何在您的代码中访问数据,以及如何使用 . 操作符进行更深入的访问。

use MiladRahimi\PhpConfig\Config;
use MiladRahimi\PhpConfig\Repositories\ArrayRepository;

$data = [
    'name' => 'MyProject',
    'mysql' => [
        'hostname' => '127.0.0.1',
        'username' => 'root',
        'password' => 'secret',
        'database' => 'my_database'
    ]
];

$repository = new ArrayRepository($data);
$config = new Config($repository);

$name = $config->get('name'); // "MyProject"
$mysql_username = $config->get('mysql.username', 'root'); // "root"
$mysql_password => $config->get('mysql.password', ''); // "secret"
$locale = $config->get('locale', 'en'); // "en" (Default)

// Runtime config setting/manipulating
$config->set('locale', 'fa');

$locale = $config->get('locale', 'en'); // "fa"

存储库

上面的示例说明了如何使用定义的数组作为 PhpConfig 的存储库。在本节中,我们将介绍一些其他存储库。

配置PHP文件

您可以将数据数组放入一个单独的PHP文件中

<?php

return [
    'name' => 'MyProject',
    'mysql' => [
        'hostname' => '127.0.0.1',
        'username' => 'root',
        'password' => 'secret',
        'database' => 'my_database'
    ]
];

然后使用配置文件

use MiladRahimi\PhpConfig\Config;
use MiladRahimi\PhpConfig\Repositories\FileRepository;

$repository = new FileRepository('config.php');
$config = new Config($repository);

$mysql_username = $config->get('mysql.username');

配置目录

在更大的规模中,您可能需要将配置数据拆分到多个文件中。不用担心,这会非常容易处理!

例如,将配置文件组织在一个目录中

Project
- index.php
- configs
- - app.php
- - mysql.php

例如 app.php

<?php
    
return [
    'name' => 'MyProject',
    'locale' => [
        'code' => 'fa',
        'name' => 'Farsi (Persian)',
    ],
    'url' => 'https://example.com'
];

mysql.php

<?php

return [
    'hostname' => '127.0.0.1',
    'username' => 'root',
    'password' => 'secret',
    'database' => 'my_database'
];

以及主代码

use MiladRahimi\PhpConfig\Config;
use MiladRahimi\PhpConfig\Repositories\DirectoryRepository;

$config = new Config(new DirectoryRepository('configs'));

$app_locale_code = $config->get('app.locale.code', 'en');
$mysql_username = $config->get('mysql.username', 'default-username');

配置JSON文件

PHP数组语法看起来很漂亮,但您可能更喜欢JSON。如果是这样,好消息是您可以将配置写入类似以下示例的JSON格式。

例如,config.json

{
    "app": {
        "name": "MyProject",
        "locale": {
            "code": "fa",
            "name": "Farsi (Persian)"
        }
    }
}

以及主代码

use MiladRahimi\PhpConfig\Config;
use MiladRahimi\PhpConfig\Repositories\JsonFileRepository;

$config = new Config(new JsonFileRepository('config.json'));

$app_locale_code = $config->get('app.locale.code', 'en'); // "fa"

配置JSON目录

单个JSON配置文件仍然存在单个PHP文件的问题,因此我们实现了另一种存储库类型,用于多个JSON文件。

例如,将配置文件组织在一个目录中

Project
- index.php
- configs
- - app.json
- - mysql.json

例如,app.json

{
    "name": "MyProject",
    "locale": {
        "code": "fa",
        "name": "Farsi (Persian)"
    }
}

mysql.json

{
    "hostname": "localhost",
    "username": "root",
    "password": "secret",
    "database": "my_project_db"
}

以及主代码

use MiladRahimi\PhpConfig\Config;
use MiladRahimi\PhpConfig\Repositories\JsonDirectoryRepository;

$config = new Config(new JsonDirectoryRepository('configs'));

$app_locale_code = $config->get('app.locale.code', 'en'); // "fa"
$mysql_username = $config->get('mysql.username', 'default-username');

自定义存储库

您还可以通过实现以下接口来创建自己的存储库

<?php
    
namespace MiladRahimi\PhpConfig\Repositories;

interface Repository
{
    /**
     * Get configuration data
     *
     * @return array
     */
    public function getData(): array;
}

许可证

PhpConfig最初由Milad Rahimi创建,并按照MIT许可证发布。