Hilfsklasse für die Arbeit mit INI-Dateien. Die Klasse implementiert das Builder-Entwurfsmuster. In der vorgestellten Klasse gibt es eine Implementierung von Funktionen für die Arbeit mit INI-Dateien. Die Grundfunktionalität umfasst das Erstellen, Hinzufügen und Lesen von Abschnitten, das Hinzufügen und Entfernen von Schlüsseln und andere Funktionen.
Zunächst müssen Sie Variablen deklarieren, die für die Dateistruktur, den Dateipfad und den Scan-Typ verantwortlich sind:
/**
* @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();
}Ich hoffe, dieser PHP INI-Dateiassistent ist hilfreich. Wenn es Verbesserungsvorschläge gibt, würde ich mich freuen, sie zu hören.