INIファイルを操作するためのPHPクラス

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ファイルアシスタントがお役に立てば幸いです。改善のご提案がございましたら、よろしくお願いいたします。




All Articles