INIファイルを操作するためのヘルパークラス。このクラスは、Builderの設計パターンを実装します。提示されたクラスは、INIファイルを操作するための機能の実装です。基本的な機能には、セクションの作成、追加、読み取り、キーの追加と削除、およびその他の機能が含まれます。
まず、ファイル構造、ファイルパス、スキャンタイプを担当する変数を宣言する必要があります。
/**
* @var array ini
*/
private array $structure = [];
/**
* @var int
*/
private int $scannerMode;
/**
* @var string
*/
private string $path;
メソッドのコンストラクターで、ファイルへのパス(作成用)とスキャンのタイプを指定し、ファイル構造を取得するためのメソッドも呼び出します。
public function __construct(string $path, int $scannerMode = INI_SCANNER_TYPED) {
$this->path = $path;
file_put_contents($path, null, LOCK_EX);
$this->scannerMode = $scannerMode;
$this->setInitStructure();
}
:
private function setInitStructure(): void {
$this->structure = parse_ini_file($this->path, true, $this->scannerMode);
}
parse_ini_file
, . true
, . :
INI_SCANNER_NORMAL
( PHP)INI_SCANNER_RAW
INI_SCANNER_RAW
( => ) . PHP 5.6.1 INI_SCANNER_TYPED
. boolean, null integer , , . "true"
, "on"
"yes"
TRUE
. "false"
, "off"
, "no"
"none"
FALSE
. "null"
NULL
. , , , . , , .
:
public function getStructure(): array {
return $this->structure;
}
- . :
public function getSection(string $section): array {
return $this->structure[$section];
}
public function getValue(string $section, string $key) {
return $this->getSection($section)[$key];
}
, , . , . :
public function addSection(string $section): Ini {
if (array_key_exists($section, $this->structure)) {
throw new Exception(" {$section} ");
}
$this->structure[$section] = [];
return $this;
}
exception, .
, :
public function addValues(string $section, array $values): Ini {
$this->structure[$section] = array_merge($values, $this->structure[$section]);
return $this;
}
, . :
public function setValues(string $section, array $values): Ini {
foreach ($values as $key => $value) {
$this->structure[$section][$key] = $value;
}
return $this;
}
, , :
public function removeSection(string $section): Ini {
unset($this->structure[$section]);
return $this;
}
public function removeKeys(string $section, array $keys): Ini {
foreach ($keys as $key) {
unset($this->structure[$section][$key]);
}
return $this;
}
, "".
- :
public function write(): void {
$iniContent = null;
foreach ($this->structure as $section => $data) {
$iniContent .= "[{$section}]\n";
foreach ($data as $key => $value) {
$iniContent .= "{$key}={$value}\n";
}
$iniContent .= "\n";
}
file_put_contents($this->path, $iniContent, LOCK_EX);
$this->setInitStructure();
}
このPHPINIファイルアシスタントがお役に立てば幸いです。改善のご提案がございましたら、よろしくお願いいたします。