Zone Webmasters - Classe de gestion de thème

> Accueil > Codes sources > Code sources PHP > Classes - PHP5 > Classe de gestion de thème

Classe de gestion de thème

Par: Rudy | Categorie: Classes - PHP5

Description

Ce code est un classe de template qui permet de géré un système de gestion de thème en PHP5.

Code source

<?php

/**
* Gestion des erreurs avec les exceptions
*/ 

class Erreur  extends Exception {

    
    public function __construct($Msg) {
        parent :: __construct($Msg);
    }
    
    public function RetourneErreur() {
        $msg  = '<div><strong>' . $this->getMessage() . '</strong>';
        $msg .= ' Ligne : ' . $this->getLine() . '</div>';
        return $msg;
    }
}

class Theme
{
	private	$Theme                 = '';
	private	$Blocs                 = array();
	private	$ContenuBlocs          = array();
	private	$ContenuBlocsCacher    = array();
	private	$variables             = array();

/**
* Constructeur de la classe
*
* $fichier     = Ficher du thème
*/ 
	public
		function __construct($fichier)
		{
			if(file_exists($fichier)) $this->Theme=file_get_contents($fichier);
			else  throw new Erreur ('Theme introuvable!!!');
		}


	public
		function Valeur($variable)
		{
			return $this->variables[$variable];
		}


/**
* Remplace une variable
*
* $variable     = Nom de la variable
* $valeur       = Valeur de remplacement la variable
*/ 

	public
		function RemplaceVar($variable,$valeur)
		{
			$this->Theme=str_replace('{'.$variable.'}',$valeur,$this->Theme);
			$this->variables[$variable] = $valeur;
		}

/**
* Remplace plusieurs variables
*
* $TableVars     = Tableau de variable et valeurs
*/ 	
	public
		function RemplaceVars($TableVars)
		{
			foreach($TableVars as $variable => $valeur)
			{
				$this->Theme=str_replace('{'.$variable.'}',$valeur,$this->Theme);
				$this->variables[$variable] = $valeur;
			}
		}
		
	public
		function MasqueBloc($NomBloc)
		{		
			$this->Theme = preg_replace("#(<!--$NomBloc-->)(.*)(<!--/$NomBloc-->)#ms",'',$this->Theme);
		}
		
	public
		function MasqueBlocs($TableNomBloc)
		{
			foreach($TableNomBloc as $NomBloc)
			{		
				$this->Theme = preg_replace("#(<!--$NomBloc-->)(.*)(<!--/$NomBloc-->)#ms",'',$this->Theme);
	        }
		}

	public
		function RemplaceBloc($NomBloc,$tableau)
		{
			$TableauRecherche = array('<!--'.$NomBloc.'-->','<!--/'.$NomBloc.'-->');
			$TableauRemplace  = array('','');

			if(!isset($this->Blocs[$NomBloc]))
			{
				$TableauEreg = array();
				ereg('<!--'.$NomBloc.'-->(.*)<!--/'.$NomBloc.'-->',$this->Theme,$TableauEreg);
				$this->Blocs[$NomBloc] = $TableauEreg[0];
			}


			while(list($cle,$valeur)=each($tableau))
			{

				$TableauRecherche[] = '{'.$cle.'}';
				$TableauRemplace[]  = $valeur;

			}

			if(!isset($this->ContenuBlocs[$NomBloc]))
			{
				$this->ContenuBlocs[$NomBloc]=str_replace($TableauRecherche,$TableauRemplace,$this->Blocs[$NomBloc]);
			}
			else
			{
				$this->ContenuBlocs[$NomBloc].=str_replace($TableauRecherche,$TableauRemplace,$this->Blocs[$NomBloc]);
			}
		}

	private
		function EffaceCommentaires()
		{
			$this->Theme = preg_replace('`<!--(.+?)-->|<!--/(.+?)-->`','',$this->Theme);
		}

	public
		function AfficheBlocs()
		{

			while(list($cle,$valeur)=each($this->ContenuBlocs))
			{
				$this->Theme = str_replace($this->Blocs[$cle],$valeur,$this->Theme);
			}
		}

	public
		function __toString()
		{
			$this->AfficheBlocs();
			$this->EffaceCommentaires();
			return($this->Theme);
		}
}
?>


Imprimer ce code source




Commentaires

Commentaires

Ça manque un peu d'informations sur l'utilisation, mais ça a l'air interessant :)

Par 01JiiN



1 commentaire

Ajouter un commentaire

Vous devez être membre pour commenter ce code source.

>> Inscrivez vous





Faire un lien | Partenaires ©2005-2008 Rudy Onfroy Tous droits réservés Contact | RSS | Plan | Haut