jelix/inifile

类用于读取和修改 ini 文件,同时保留注释和空行

v3.4.0 2024-02-13 16:19 UTC

README

一些类用于读取和修改 ini 文件,同时保留注释和空行。

它们支持部分和数组值。您还可以合并部分,合并两个 ini 文件,以及重命名一些值或部分。

安装

您可以使用 Composer 安装它。在您的项目中

composer require "jelix/inifile"

使用方法

\Jelix\IniFile\IniModifier 类允许读取 ini 文件,修改其内容,并通过保留其注释和空行保存它。

不要仅使用此类来读取内容。而是使用 \Jelix\IniFile\Utilparse_ini_file() 进行此操作,它更高效和性能更好。

$ini = new \Jelix\IniFile\IniModifier('myfile.ini');

// setting a parameter.  (section_name is optional)
$ini->setValue('parameter_name', 'value', 'section_name');

// retrieve a parameter value. (section_name is optional)
$val = $ini->getValue('parameter_name', 'section_name');

// remove a parameter
$ini->removeValue('parameter_name', 'section_name');


// save into file

$ini->save();
$ini->saveAs('otherfile.ini');

// importing an ini file into an other
$ini2 = new \Jelix\IniFile\IniModifier('myfile2.ini');
$ini->import($ini2);
$ini->save();

// merging two section: merge sectionSource into sectionTarget and then 
// sectionSource is removed
$ini->mergeSection('sectionSource', 'sectionTarget');

它还支持数组值(索引或关联)如

foo[]=bar
foo[]=baz
assoc[key1]=car
assoc[otherkey]=bus

然后在 PHP 中

$ini = new \Jelix\IniFile\IniModifier('myfile.ini');

$val = $ini->getValue('foo'); // array('bar', 'baz');
$val = $ini->getValue('assoc'); // array('key1'=>'car', 'otherkey'=>'bus');

$ini->setValue('foo', 'other value', 0, '');
$val = $ini->getValue('foo'); // array('bar', 'baz', 'other value');

$ini->setValue('foo', 'five', 0, 5);
$val = $ini->getValue('foo'); // array('bar', 'baz', 'other value', 5 => 'five');


$ini->setValue('assoc', 'other value', 0, 'ov');
$val = $ini->getValue('assoc'); // array('key1'=>'car', 'otherkey'=>'bus', 'ov'=>'other value');

保存后,ini 内容是

foo[]=bar
foo[]=baz
assoc[key1]=car
assoc[otherkey]=bus

foo[]="other value"
foo[]=five
assoc[ov]="other value"

注意:结果可以由 parse_ini_file() 解析。

查看类了解其他方法和选项。

\Jelix\IniFile\MultiIniModifier 允许同时加载两个 ini 文件,其中第二个文件“覆盖”第一个文件的值。

\Jelix\IniFile\IniModifierArray 允许同时加载多个文件,并可以将它们的值视为合并的文件。

\Jelix\IniFile\Util 包含简单的方法来读取、写入和合并 ini 文件。这些只是 parse_ini_file() 的包装。