Mangotemplate v.1 ( nouveau systeme de template -> simple et facile d'utitlisation )

Description

MangoTemplate ( v.1 )
est un systeme de template performant et simple d'utilisation
( enfin ça c'est à vous de me le confirmer ;] )

fonctionnalités :

- Permet de vérifier les fonctions nécessaire pour le bon déroulement de la class 'MangoTemplate' :

¤ Message d'erreur configurable
¤ Possibilité d'intégrer des codes qui sont interprétés par la suite
comme du code html ( possibilité de rajout )

- Possibilité de changer le signe de la variable de la template à volonté

Exemple :
le_sign{ var_name }

- Possibilité d'interpréter le contenu de la variable pour du code PHP
- Possibilité de ne pas respecter les minuscules, majuscules
- la rapidité d'éxécution est plutôt bonne ( rapide )
( selon aussi votre template mais sinon elle est plutot rapide )

Voila ;)

Source / Exemple :


<?Php

		/* *********************************** */
		/* ******* [ MangoTemplate ] ** v.1 ** */
		/* *********************************** */
		/* ** --> Write By DOTWIZARD512 <-- ** */
		/* ******** ( 18/04/2006 ) *********** */
		/* *********************************** */
		/* ****** || For the World || ******** */
		/* *********************************** */
		/* *********   ^^   Enjoy     ******** */
		/* *********************************** */
		/* *********************************** */
		/* ******* mega5120000@yahoo.fr  ***** */
		/* ****** dotwizard512@gmail.com ***** */
		/* *********************************** */

		/* *********************************** */
		/*   /!\  dont erase the comments  /!\ */
		/* ********** [ PLEASE ] ************* */
		/* *********************************** */

	/* La classe Template */
	class MangoTemplate
	{
		/* Signe de la variable de la template; exemple: sign{ var }  */
		var $DefaultOpSign = '$';
			
		/* Tableau pour les opérations temporaire */
		var $tmp = Array();

		/* Tableau contenant le style du message d'erreur  */
		var $DefaultErrStyle = Array(
					      '<fieldset style="background:#000000;border: 2 #990000 solid;text-align:center;font-family:monospace;color:red;"><br><b><li></b> [ ',
                                              ' ] ; ',
                                              ' <br><br></fieldset>'
					    );
									 
	  	/* Message d'erreur par defaut : Erreur interne [ ATTENTION LES CARACTERES SPECIAUX ( voir plus bas ) NE SERONT PAS TRADUIT  ]*/
		var $DefaultErr = 'ERREUR INTERNE';

		/* Le tableaux des erreur */
		var $ErrorLib = Array(
					"[RLN][RLN]Une ou plusieurs des fonctions obligatoires pour le bon déroulement de [f=#000033['] style='#009999/] MangoTemplate (c) /en.sp sont inéxistantes !!!!!",
					"[RLN][RLN]La Template spécifier n'existe pas !!!!!",
					"[RLN][RLN]Les Paramètres pour l'utilisation de la template sont érronés !!!!",
					"[RLN][RLN]Il est impossible d'ouvrir ou de lire la template spécifier !!!!![RLN]( veuillez vérifier le chmod de votre template )"
				      );
	
		
		/* Caractère de substitution des messages d'erreur */
		var $SpeChar = Array(
				        Array( '[RLN]' , '<br>' ),                             
					Array( '/]' , '\' >' ),                                
					Array( '[c=' , '<span style=\'color:' ),               
					Array( '[f=' , '<span style=\'background-color:' ),
					Array( '/en.sp' , '</span>' ),
					Array( '[b]' , '<b>' ),
				        Array( '/b' , '</b>' ),
					Array( '[u]' , '<u>' ),
					Array( '/u' , '</u>' ),
					Array( '[i]' , '<i>' ),
					Array( '/i' , '</i>' ),
					Array( '[li]' , '<li>' ),
					Array( '[hrw1=' , '<hr width=\'' ),
					Array( '[barrer]' , '<strike>' ),
					Array( '/barrer' , '</strike>' ),
					Array( '[citation]' , '<blockquote>' ),
					Array( '/citation' , '</blockquote>' ),
					Array( '[img=' , '<img border=\'0\' src=\'' ),   // ATTENTION POUR INSERER UNE IMAGE C'EST [img=votreimage.jpg/] et non [img=votreimage.jpg]
					Array( '[p]' , '/p' ),
					Array( '[small]' , '<small>' ),
					Array( '/small' , '</small>' ),
					Array( '[big]' , '<big>' ),
					Array( '/big' , '</big>' ),
					Array( '[label]' , '<label>' ),
					Array( '/label' , '</label>' ),
					Array( '[style=' , 'style=\'' ),
					Array( '[\']' , '\'' ),
					Array( '(c)' , '©' ),
					Array( '' , '' ),
					Array( '' , '' )
									
				  );
								
		/* Tableau des Fonctions obligatoire pour le bon déroulement du script */
		var $UseFonction = Array(
			                   'file_exists',
			                   'is_array',
			                   'explode',
			                   'preg_replace',
			                   'str_replace',
			                   'fopen',
			                   'fgets',
			                   'fclose',
			                   'feof'
			                );
			
		/* Fonction qui revoie l'erreur correspondant a l'id */	
		function ERR_LIB( $ID )
		{
			if( isset( $this->ErrorLib[ $ID ] ) && !empty( $this->ErrorLib[ $ID ] ) )
			{
				$this->tmp[ 0 ] = $this->DefaultErrStyle[ 0 ] . 'Error ID = ' . $ID . $this->DefaultErrStyle[ 1 ] . htmlentities( $this->ErrorLib[ $ID ] ) . "[RLN][RLN][RLN][label][f=#000033['] style='#009999/]  MangoTemplate (c) [RLN] By DotWizard512 /en.sp[label]" . $this->DefaultErrStyle[ 2 ];
	
					for( $this->index = 0; $this->index < count( $this->SpeChar ); $this->index++ )
					{
						$this->tmp[ 0 ] = str_replace( $this->SpeChar[ $this->index ][ 0 ] , $this->SpeChar[ $this->index ][ 1 ] , $this->tmp[ 0 ] );
					}
				
				return $this->tmp[ 0 ];
			}
				else
			{
				return $this->DefaultErrStyle[ 0 ] . $this->DefaultErr . $this->DefaultErrStyle[ 1 ] . $this->DefaultErrStyle[ 2 ];
			}
		}
		
		/* Fonctions qui verifie toutes les fonctions obligatoire pour le bon déroulement du script */
		function StartVerifOk()
		{
			for( $this->index = 0; $this->index < count( $this->UseFonction ); $this->index++ )
			{
				if( !empty( $this->UseFonction[ $this->index ] ) && !function_exists( $this->UseFonction[ $this->index ] ) )
				{
					return $this->ERR_LIB( 0 ) ;
				}
			}
		}
		
		/* Fonction d'utilisation d'une template */
		function UseTemplate( $TPL , $DATA , $OPSIGN, $RESPECT_C , $CODE )
		{
			
			if( empty( $TPL ) or $TPL == " " )
			{
				return $this->ERR_LIB( 2 );
			}
				elseif( !file_exists( $TPL ) )
			{
				return $this->ERR_LIB( 1 );
			}
				elseif( !empty( $DATA ) && !is_array( $DATA ) )
			{
				$DATA = explode( ';' , $DATA );

					$this->tmp[ 1 ] = Array();
					$this->tmp[ 2 ] = count( $DATA );
					
						for( $this->index = 0; $this->index < $this->tmp[ 2 ]; $this->index++ )
						{
							$this->tmp[ 1 ][ $this->index ] = explode( ':' , $DATA[ $this->index ] );
						}

				$DATA = $this->tmp[ 1 ];

			}
				elseif( empty( $DATA ) )
			{
				$DATA = Array( Array( '' , '' ) );
			}
			
				$this->tmp[ 3 ] = @fopen( $TPL , 'r' );
				
					if( $this->tmp[ 3 ] == false )
					{
						return $this->ERR_LIB( 3 );
					}
						else
					{
							if( @fgets( $this->tmp[ 3 ] , filesize( $this->tmp[ 3 ] ) ) )
							{
								return $this->ERR_LIB( 3 );
							}
							
						$this->tmp[ 4 ] = "";
						
							while( !feof( $this->tmp[ 3 ] ) )
							{
								$this->tmp[ 4 ] .= fgets( $this->tmp[ 3 ] , 255 );
							}

					}
					
				@fclose( $this->tmp[ 3 ] );
				$this->tmp[ 5 ] = $this->tmp[ 4 ];
				
					if( empty( $OPSIGN ) )
					{
						$OPSIGN = $this->DefaultOpSign;
					}

					for( $this->index = 0; $this->index < count( $DATA ); $this->index++ )
					{
						$this->tmp[ 6 ] = "#(\\" . $OPSIGN . "\{ " . $DATA[ $this->index ][ 0 ] . " \})#";

							if( !empty( $RESPECT_C ) && $RESPECT_C == true )
							{
								$this->tmp[ 6 ] .= "i";
							}
								
							if( !empty( $CODE ) && $CODE == true )
							{
								$this->tmp[ 6 ] .= "e";
							}
							
							$this->tmp[ 5 ] = preg_replace(
															 $this->tmp[ 6 ],
															 $DATA[ $this->index ][ 1 ],
														 	 $this->tmp[ 5 ]
														  );
														  
					}

			return $this->tmp[ 5 ];			

		}
	
	}

?>

Conclusion :


Vous avez quelques exemples à l'interieur du zip regarder et dit moi votre avis ;)

P.S.: Pour la catégorie à vrai dire
je ne sais pas dans laquelle il faut
la mettre ( donc je l'ai mis dans 'Class et Objet' )
si vous avez une autre idée merci de
me la proposer

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.