kktsvetkov/konphigo

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

简单配置库

v1.0.1.1 2017-03-19 11:28 UTC

This package is auto-updated.

Last update: 2024-05-13 22:32:28 UTC


README

Konphigo 是一个用于处理配置的小型 PHP5/PHP7 库。

它设计得非常易于使用。我使用过其他几个配置实现,它们对我来说相当笨拙且过于复杂。我更喜欢简洁且可重用的。

Konphigo 设计成作为 "门面" 使用 -- 一个具有静态方法的类。

基本使用

您可以通过调用 \Konphigo\Konphigo::get() 方法来读取配置数据。第一个参数是要读取的内容的名称。

$a = \Konphigo\Konphigo::get('a');

通过使用空第一个参数,您可以获取所有加载的配置数据。

$all = \Konphigo\Konphigo::get();

第二个参数是默认值,如果想要读取的内容不存在时使用。

$a = \Konphigo\Konphigo::get('a', 123);

由于配置中可以同时包含标量和数组,因此第二个参数也可以是数组。

$skip = \Konphigo\Konphigo::get('skip', ['.svn', '.git']);

加载配置

我想保持库非常简单。主类 \Konphigo\Konphigo 有一个用于加载配置数据的单方法,名为 \Konphigo\Konphigo::load()

\Konphigo\Konphigo::load([
	'skip' => ['.svn', '.git'],
	'tmp' => '/tmp'
	]);

第一个参数是要读取的数据的数组。它是一个关联数组,键是配置数据的名称,值是实际数据。

在许多情况下,您需要在多个位置加载配置数据。您开始加载一些数据,然后需要添加更多数据;在某些情况下,您需要替换已经加载的一些数据。这就是 \Konphigo\Konphigo::load() 方法的第二个参数用武之地。这是用于处理加载数据的 "模式"。

// replacing already loaded "skip" configuration value with a new one
//
\Konphigo\Konphigo::load([
	'skip' => ['.svn', '.git', '.dudu']
	],
	Konphigo::LOAD_MODE_REPLACE
	);

有三个选项:

  • Konphigo::LOAD_MODE_UNION - 默认值,这将获取新数据并将其与数组进行并集操作,例如 $config += $data;
  • Konphigo::LOAD_MODE_MERGE - 新数据将合并到已加载的数据中,例如 $config = array_merge($data, $config);;
  • Konphigo::LOAD_MODE_REPLACE - 如果有匹配项,新数据将覆盖现有键,例如 $config = array_replace($data, $config);;

array_replace() 相当简单,大多数人都会对数组并集和 array_merge() 之间的区别感到困惑。

高级加载

在此库中,Konphigo\Read 命名空间下有几个类。它们设计用于从各种媒体读取配置数据。这些 "读取器" 类不与 Konphigo 类一起工作,而是返回从读取内容中获取的数组。我故意进行了解耦,因为我在一开始就说过,我希望这将是极其简单的。

所有 Konphigo\Read 类都使用静态 ::load() 方法读取数据。第一个方法通常是如何识别要读取的媒体。第二个参数是可选的,用于提供读取内容的默认值;这样,即使从空媒体读取,也会从这些默认值中加载配置数据。

Konphigo\Read\PHP

此读取器从 PHP 文件中读取数据。

 \Konphigo\Konphigo::load(
 	\Konphigo\Read\PHP::load(
 		'config-test.php',
 		array('B' => 303, 'CC' => 'ddd')
 	)
 );

这些文件需要遵循一个格式,允许通过包含它们来获取数据。

<?php return array(
	'a' => 11,
	'B' => 202,
);

Konphigo\Read\JSON

此读取器从包含 JSON 编码数据的文件中读取。

 \Konphigo\Konphigo::load(
 	\Konphigo\Read\JSON::load(
 		'config-test.json',
 		array('B' => 303, 'CC' => 'ddd')
 	)
 );

没有格式要求,只需是有效的 JSON 即可。

使用JSON文件进行配置时,需要考虑的一点是,如果将它们放在可访问的文件夹中,那么它们是可读的。例如,如果您的配置在网站根目录中,有人可以通过加载 www.example.com/config.json 来读取它。对于PHP文件来说,情况则不同,因为如果您尝试读取它们(访问 www.example.com/config.php),您将一无所获,因为PHP文件返回值但不打印任何内容。

Konphigo\Read\KT

这个类读取文件,用我自己的方式对PHP进行操作。这是我在项目中使用的方法。它使用 Konphigo\Read\PHP 读取数据。此外,它将“名称”转换为要加载的PHP文件。

 \Konphigo\Konphigo::load(
 	\Konphigo\Read\KT::load(
 		'kt',
 		array('B' => 303, 'CC' => 'ddd')
 	)
 );

这个类读取文件夹中的所有PHP文件,您可以使用 \Konphigo\Read\KT::folder() 获取/设置文件夹。如果要加载的媒体名称为空,则使用机器名称来组合它: $name = 'machine.' . php_uname('n');。这允许我将特定于机器的配置存储在版本控制系统内,而不用担心配置冲突。

一些技巧

以下是一些使操作更简便的想法

class_alias()

创建类别名到 \Konphigo\Konphigo 以减少输入,例如:

class_alias('Konphigo', '\Konphigo\Konphigo');

这样,您就不必每次都使用长的 \Konphigo\Konphigo,也不必每次使用时都显式声明为 "use \Konphigo\Konphigo as Konphigo;"。