Ecrire des fichiers ini simplement avec PHP

Bonjour à tous,

Pour des question de performances, je voulais enregistrer plusieurs informations (une 10aine) pour un nombre très important de “clients”.
Dans ce cas, l’utilisation d’une base de données n’aura pas été réellement justifiée et aurait ralentie le script…

C’est quoi, j’ai donc choisi de stocker ces informations dans un fichier. Le fichier ini, permet d’organiser de manière très simple un grand nombre de données. De plus, il peut être “récuperer” simplement par PHP avec la fonction parse_ini_file.

Pour écrire un fichier ini justement, il n’y a pas de fonctions PHP ! C’est pourquoi je me suis vu dans l’obligation de créer une classe à cet effet, la voilà :

<?php
class ini
{
 
	var $ini;
	var $filename;
 
	public function ini ($filename, $commentaire = false) {
		$this->filename = $filename;
		$this->ini = (!$commentaire) ? ' ' : ';'.$commentaire;
	}
 
	public function ajouter_array ($array) {
		foreach ($array as $key => $val) {
			if (is_array($val)) {
				$this->sous_tableau($val, $key);
			}
			else if (is_string($key)) {
				$this->ajouter_valeur($key, $val);
			}
		}
	}
 
	private function sous_tableau ($tab, $groupe = false) {
		if ($groupe) {
			$this->ini .= "n".'['.$groupe.']';
		}
		foreach ($tab as $key => $val) {
			if (!$this->ajouter_valeur($key, $val)) return false;
		}
		$this->ini .= "n";
		return true;
	}
 
	private function ajouter_valeur ($key, $val) {
		if (is_array($val)) {
			echo '<strong>Erreur :</strong> Impossible d'ajouter une valeur';
			return false;
		}
		else if (is_string($val) OR is_double($val) OR is_int($val)) {
			$this->ini .= "n".$key.' = "'.$val.'"';
		}
		else {
			echo '<strong>Erreur :</strong> Le type de donnée n'est pas supporté';
			return false;
		}
		return true;
	}
 
	public function ecrire ($rewrite = false) {
		$c = true;
		if (file_exists($this->filename)) {
			if ($rewrite) {
				@unlink($filename);
			}
			else if (!$rewrite) {
				echo '<strong>Erreur fatale :</strong> Le fichier ini existe déjà';
				$c = false;
				return false;
			}
		}
		if ($c) {
			$fichier = fopen($this->filename, 'w');
			if (!$fichier) {
				echo '<strong>Erreur fatale :</strong> Impossible d'ouvrir le fichier';
				return false;
			}
			if (!fwrite($fichier, $this->ini)) {
				echo '<strong>Erreur fatale :</strong> Impossible d'écrire dans le fichier';
				return false;
			}
			fclose($fichier);
		}
	}
}
?>

Pour l’utiliser, rien de plus simple :

<?php
$array = array();
$array['val1'] = 10;
$array['val2'] = 'bonjour';
$array['val3'] = "Hollé ; Bonjour";
$array['maurice'] = array ('test' => 'valeeur1', 'test2' => 'Val2');
$array['georges'] = array ('test' => 'valeeur1', 'test2' => 'Val2');
 
$ini = new ini ('fichier.ini', 'Description du fichier');
$ini->ajouter_array($array);
$ini->ecrire();
?>

Ce qui génèrera un fichier “fichier.ini” à l’endroit du script contenant :

;Description du fichier
val1 = "10"
val2 = "bonjour"
val3 = "Hollé ; Bonjour"
[maurice]
test = "valeeur1"
test2 = "Val2"
 
[georges]
test = "valeeur1"
test2 = "Val2"

A bientôt.

Leave a Reply

Your email address will not be published. Required fields are marked *

*


*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="" escaped="" highlight="">

Notify me of followup comments via e-mail. You can also subscribe without commenting.