begin process at 2012 02 23 01:01:06
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Class et Objet ( POO )

 > CLASSE DE GESTION DE "VARIABLES GLOBALES D'ENVIRONNEMENT"

CLASSE DE GESTION DE "VARIABLES GLOBALES D'ENVIRONNEMENT"


 Information sur la source



 Description

Dans mon site j'avais besoin de variables "globales", qui ne soient pas seulement limitées à ma propre session, mais communes à tous les visiteurs. Un peu comme les super-globales $_SERVER. ou comme des constantes. Mais que je pourrais aussi modifier !

Le principe est donc de lire / écrire dans un fichier sous forme d'un array (nom => valeur). J'ai pas trouvé mieux.
Le fichier (nommé *.cache.php) doit exister et doit déjà contenir les valeurs nécessaires (la méthode __set en particulier ne crée pas de nouvelle valeur)

Source

  • <?php
  • /*
  • * Gestion des fichiers contenant les variables d'environnement
  • * ces variables sont communes à tout le site et tous les visiteurs
  • * elles sont enregistrées dans un fichier php sous forme d'un tableau
  • */
  • class cache {
  • private $contenu = array(); // cache
  • private $save = false; // enregistrer le fichier ?
  • private $name;
  • private $file;
  • /* constructeur */
  • function __construct($cache, $save = false) {
  • // le fichier est dans un sous-repertoire /cache
  • $this->file = "cache/$cache.cache.php";
  • if(!file_exists($file))
  • die("erreur cache=$cache: inconnu");
  • include_once($this->file);
  • $this->name = '_'.$cache;
  • $this->contenu = ${$this->name};
  • /* enregistrer ou pas à la fermeture? */
  • $this->save = $save;
  • }
  • function __destruct(){ /* enregistre le fichier ? */
  • if($this->save) $this->cache();
  • }
  • /* méthodes set & get: lire ou écrire une variable */
  • function __set($key, $value) {
  • if(isset($this->contenu[$key]))
  • $this->contenu[$key] = $value;
  • else echo "classe 'cache({$this->name})'->$key = $value\n";
  • }
  • function __get($key) {
  • if(isset($this->contenu[$key])) return $this->contenu[$key];
  • else { echo "GET classe 'cache({$this->name})'->$key\n"; return false; }
  • }
  • function get_array(){
  • return $this->contenu;
  • }
  • function force_save($save=true){
  • $this->save = $save;
  • }
  • function cache(){ /* enregistre le fichier */
  • $fp = fopen($this->file, "w");
  • $txt = '<?php $'.$this->name.' = ';
  • $txt .= var_export($this->contenu, true);
  • $txt .= '; ?>';
  • fwrite($fp, $txt);
  • fclose($fp);
  • }
  • }
  • ?>
<?php
/*
 * Gestion des fichiers contenant les variables d'environnement
 * ces variables sont communes à tout le site et tous les visiteurs
 * elles sont enregistrées dans un fichier php sous forme d'un tableau
 */
class cache {

	private $contenu = array(); // cache
	private $save = false; // enregistrer le fichier ?
	private $name;
	private $file;

	/* constructeur */
	function __construct($cache, $save = false) {
		// le fichier est dans un sous-repertoire /cache
		$this->file = "cache/$cache.cache.php";
		if(!file_exists($file))
			die("erreur cache=$cache: inconnu");

		include_once($this->file);
		$this->name = '_'.$cache;
		$this->contenu = ${$this->name};

		/* enregistrer ou pas à la fermeture? */
		$this->save = $save;
	}

	function __destruct(){ /* enregistre le fichier ? */
		if($this->save) $this->cache();
	}

	/* méthodes set & get: lire ou écrire une variable */
	function __set($key, $value) {
		if(isset($this->contenu[$key]))
			$this->contenu[$key] = $value;
		else echo "classe 'cache({$this->name})'->$key = $value\n";
	}

	function __get($key) {
		if(isset($this->contenu[$key])) return $this->contenu[$key];
		else { echo "GET classe 'cache({$this->name})'->$key\n"; return false; }
	}

	function get_array(){
		return $this->contenu;
	}

	function force_save($save=true){
		$this->save = $save;
	}

	function cache(){ /* enregistre le fichier */
		$fp = fopen($this->file, "w");

		$txt = '<?php $'.$this->name.' = ';
		$txt .=  var_export($this->contenu, true);
		$txt .= '; ?>';

		fwrite($fp, $txt);
		fclose($fp);
	}

}

?>

 Conclusion

L'utilisation est simple, on crée un fichier - par exemple - cache/global.cache.php :
<?php $_global = array('toto' => 0); ?>

dans les scripts on utilise pour l'appeler :

// true pour enregistrer le fichier à la fin du script :
$cache = new cache('global', true);
// lecture de la valeur
$variable_globale = $cache->toto;
// on incrémente un compteur
$cache->toto ++;



 Sources du même auteur

EXPORTATION IMPORTATION DE BDD RESPECTANT LES RELATIONS ENTR...

 Sources de la même categorie

Source avec Zip MY.DEVIANTART API par inwebo
Source avec Zip COLLECTION.CLASS.MIN.PHP par thunderhunter
Source avec Zip SIMPLETEMPLATE par thunderhunter
Source avec Zip Source avec une capture VOIR QUI VISITE VOTRE SITE par Dariumis
Source avec Zip CLASS SIMPLE CBASEDONNEE par smag42

 Sources en rapport avec celle ci

UPLOADER DES FICHIER DANSUN DOSSIER, SÉCURISÉ AVEC MOT DE PA... par raizzo
COMPTEUR DE VISITES SUR FICHIER par pierreSabatier
Source avec Zip Source avec une capture A-ANNONCES VERSION PHP 5 par cod57
GESTION FTP (CLASSE) par shevabam
FONCTION _SCANDIR UTF8 par LDDL

Commentaires et avis

Commentaire de michaelvd le 27/01/2012 17:40:50 8/10

Vraiment très sympa, bravo pour cette belle classe bien maîtrisée. Mais niveau performance et facilité, j'utiliserai plutôt une base de donnée pour ce genre d'opération.. Mais c'est très agréable de voir un objet comme celui-ci.

Commentaire de madislak le 30/01/2012 10:21:24

Le code est nickel ;-)
Mais pourquoi ne pas utiliser un fichier .ini ?

Commentaire de pifou25 le 09/02/2012 21:28:38

une base de données c'est mieux pour des gros volumes. pour quelques petites variables c'est plus rapide ainsi (pas de connexion vers la bdd à ouvrir à chaque page, en particulier)

un fichier .ini serait une possibilité mais comme j'utilise un 'include' pour simplifier l'utilisation du fichier, il fallait que le fichier soit déjà du php. Sinon j'avais pensé aussi à un fichier xml, plutot que ini, c'est un peu plus standard.

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

text to variable [ par Freneticode ] ---&gt; FrenetiCodehello a tous ..voila je suis en train de cree une function qui me permet de liste toute les variables systeme...et les autres!!!voi balise, cache :( [ par elanspeech ] Bonjour,J'utilise la balise suivante :&lt;embed src="fichier.wav" width=145 height=25 autostart="false" cache="false" controls="controlpanel"&gt;fichi probleme fichier [ par Clonk ] Bonjour,j'utilise des fichiers dans mon site et j'ai un problème avec (non, je peux pas faire sans...):lorsque je veux supprimer une ou plusieurs lign pbm variable environnement [ par dalow17 ] Voilà, je développe un intranet et j'aimerai récupérer le login de la session win2K pour que l'utilisateur soit directement reconnu et n'effectuer qu' passage de varaibles php4 [ par michelvernet2 ] bonjour,pour passer la variable X du fichier A vers le fichier B, il faudra parait il bientot déclarer la variable X dans B par une instruction du typ Probleme de fichier pour upload [ par ben01n ] salut je selectionne un fichier avec un champ file (&lt;INPUT TYPE=FILE SIZE=30 NAME='Fichier'&gt;) puis je récupère la variable $Fichier envoyée par variable globale non définies [ par petit_stagiaire ] bonjour, je possède un fichier global.php qui contient des variables dont j'ai besoin notamment pour me connecter à ma base de donnée.Dans mon index j récupéré variable [ par NargiT ] =======fichier x.php&lt;form action="envoie.php" method="post"&gt;Pseudo : &lt;input name="pseudo" type="text" id="pseudo" value="moi" size="12"&gt;&l PB RECUPERATION VARIABLE [ par nougitch ] Bonjour à tous,J'aimerais faire un upload sur mon site.La fonction en elle-même est correcte, c'est-à-dire que le fichier que je sélectionne est bel e Les sessions [ par ninou2 ] Denis HOME -- Débutant----------------------------------------------------------------------j'ai un gros problème avec les sessions. Le fichier de ses


Nos sponsors


Appels d'offres

Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 3,307 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales