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

Soyez le premier à donner votre avis sur cette source.

Vue 5 974 fois - Téléchargée 596 fois

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

Ajouter un commentaire

Commentaires

Messages postés
459
Date d'inscription
dimanche 9 janvier 2005
Statut
Membre
Dernière intervention
11 mai 2013

Merci pour ta réponse clair CouCou747,
mais il est possible de renvoyer le text brute sans tout l'HTML
en vidant les variables $DefaultErrStyle[ index ] comme ceci :

var $DefaultErrStyle = Array(
'',
'',
''
);

et en vidant le tableau de code spéciaux ( var $SpeChar[ index ] )
Voila :)
Sa marche nan ?

P.S.: Sa dirait pas a quelqu'un de le tester en local
pour me dire l'impression que sa lui a fait ^^'
Messages postés
12303
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
36
... malalam et antho, vous pourriez arréter vos gamineries ?

Personellement, j'aurais pensé plutot faire une template error, plutot que de mettre du html... Ou alors renvoyer false et mettre une fonction template_error() qui aurait renvoyé le message... en texte brut...

un moteur de template est fait comme le dit antho pour déparer le code de la mise en page...
Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
8
Salut,

au contraire un moteur de templates est fait pour séparer le code XHTML du code PHP, or là ce n'est pas le cas non plus... mais bon je n'en dis pas plus car je vais me faire censurer sinon...
Messages postés
459
Date d'inscription
dimanche 9 janvier 2005
Statut
Membre
Dernière intervention
11 mai 2013

A bon, et en quoi esque le fait d'avoir de l'HTML
dans un moteur de template est négatif ^^ ?
L'HTML présent dans le moteur de template y est pour
deux raisons :

1) Pour les erreurs éventuelles rencontrer lors
de l'éxécution du script.
( STYLE DU MESSAGE D'ERREUR [ couleur, font, .... ] )

2) Et enfin pour les codes qu'ils est possible
d'intégrer dans le message d'erreur qui seront
ensuite interpréter comme du code HTML
( le code HTML spécifier par le même id )

Voila :)
Mais je ne comprent toujours pas pourquoi eske c'est dommage ^^' ?
Moi je trouve que justement sa le rend encore plus configurable...., nan ?
Messages postés
12303
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
36
dominion, on ne parle pas de templates de types (comme en C++ si j'ai bien compris à quoi servent les templates en C++...) cette fois ci, on parle de templates de design : tu envoi le contenu au moteur de templates, et il te sors une page html...

j'ai pas fait gaffe, à tout le code, mais j'ai trouvé un point négatif : dans ton code, tu as du html... pour un moteur de templates, c'est domage
Afficher les 9 commentaires

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.