Простой блог о web-технологиях

Работа с ini файлами в php

332
27.01.2018
В php имеется функция для чтения ini файлов, но нет стандартных способов для записи информации в ini.

С помощью ini файла можно создать файл конфигурации вашего web-сайта для облегчения его последующего использования. Например вы хотите изменить title вашего сайта, для этого нужно в каждой странице менять значение этого title.

Но почему бы не создать файл config.ini, например, задать ему параметр title со значением и изменять его через панель управления вашим сайтом? Сегодня я расскажу как это можно легко воплотить в жизнь с помощью небольшой функции.
Для начала создаем файл iniclass.php и вставляем в него следующий код:
<?
if (!defined('_BR_'))
define('_BR_',chr(13).chr(10));

class TIniFileEx {
public $filename;
public $arr;

function __construct($file = false){
if ($file)
$this->loadFromFile($file);
}

function initArray(){
$this->arr = parse_ini_file($this->filename, true);
}

function loadFromFile($file){
$result = true;
$this->filename = $file;
if (file_exists($file) && is_readable($file)){
$this->initArray();
}
else
$result = false;
return $result;
}

function write($section, $key, $value){
if (is_bool($value))
$value = $value ? 1 : 0;
$this->arr[$section][$key] = $value;
}

function eraseSection($section){
if (isset($this->arr[$section]))
unset($this->arr[$section]);
}

function deleteKey($section, $key){
if (isset($this->arr[$section][$key]))
unset($this->arr[$section][$key]);
}

function readSections(&$array){
$array = array_keys($this->arr);
return $array;
}

function readKeys($section, &$array){
if (isset($this->arr[$section])){
$array = array_keys($this->arr[$section]);
return $array;
}
return array();
}

function updateFile(){
$result = '';
foreach ($this->arr as $sname=>$section){
$result .= '[' . $sname . ']' . _BR_;
foreach ($section as $key=>$value){
$result .= $key .'='.$value . _BR_;
}
$result .= _BR_;
}
@file_put_contents($this->filename, $result);
return true;
}

function __destruct(){
$this->updateFile();
}
}
?>

Данный код представляет собой набор функций, позволяющих корректно записывать и выводить информацию из ini-файлов средствами php.

Так же нам необходимо создать config.ini файл со следующим содержимым:
[main]
title="Hello world"

Сама структура ini-файлов представляет собой набор разделов и параметров. В данном случае мы создали раздел
main с единственным параметром title, значение которого Hello world.

Затем создадим файл, например index.php в котором будем записывать в наш ini файл данные через <input> и выводить их в тег <title>:
<?
include('./iniclass.php'); // Подгружаем на страницу наши функции для работы с ini
$config = parse_ini_file('./config.ini', true); // Создаем переменную для чтения из ini

if(isset($_POST['edit'])) {
$ini = new TIniFileEx('./config.ini'); // Создаем объект
$ini->write('main','title',$_POST['title']); // Записываем новое значение из input title
$ini->updateFile(); // записываем информацию в ini-файл
}
?>
<html>
<head>
<title><? echo $config['main']['title']; ?></title> // Выводим значение из ini файла
</head>
<body>
Для изменения title введите в поле новое значение:
<input type="text" name="title" value="<? echo $config['main']['title']; ?>" />
<input type="submit" name="edit" value="Изменить" />
</body>
</html>

Такими несложными действиями можно работать с ini-файлами в php. Важно учесть что ini-файлы подходят для работы  с простой информацией, для работы же с объемной и структурированной информацией необходимо использовать базы данных, например mysql.

ini, php, конфигурация, запись в ini
Нет комментариев
Оставить комментарий
необходимо заполнить выделенные поля