فئة المساعد للعمل مع ملفات 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();
}آمل أن يكون مساعد ملف PHP INI مفيدًا. إذا كانت هناك اقتراحات للتحسين ، فسأكون سعيدًا لسماعها.