Warning Nu esti autentificat. Te rog autentifica-te sau inregistreaza-te pentru a avea acces la toate facilitatile forumului.
SkullBox  
Noiembrie 21, 2008, 07:00:49 am
Bine ai venit, Vizitator. Trebuie să te autentifici sau să îţi creezi un cont.
Ai pierdut sau nu ai primit emailul care conţine codul de activare al contului?

Autentifică-te cu numele de utilizator, parola şi precizează durata sesiunii.
Noutăţi: Gadgetinho - IT cu zambetul pe buze
 
 SkullBoxDirector webTutoriale  Pagina principală   Ajutor Caută Autentificare Creează un cont  
Pagini: [1]
  Imprimă  
Subiect: Template engine(v1.9[bugs fixed])  (Citit de 205 ori)
0Utilizatori şi 1 Vizitatori
AnDrEwBoY
Newbie
*
Deconectat Deconectat

Mesaje: 16


Template engine(v1.9[bugs fixed]), Iulie 04, 2008, 08:18:34 pm

Un template engine facut de mine!Nu i`am mai facut update`uri de cateva saptamani dar cred ca ar putea fi folositor!Este foarte bine explicat si nu cred ca veti intampina probleme!Dar va stau la dispozitie!


# FILE :  [COLOR="DarkOrange"]template.tpl[/COLOR]
Cod:
<html>
<head>{Head}</head>
<body {Body_Argv}>
{Content}
</body>
</html>
# FILE :  [COLOR="DarkOrange"]engine.php[/COLOR]

Cod:
<?php

class Template {


// basic stuff

var $file ''//filename template
    
var $tmp_vars = array(); //all vars goes here
    
var $content ''//all compiled template
var $ext '.tpl'//template extension

     
//construct function
function __construct($file '') {

   $this->file $file.$this->ext;   
   
}//end construct
        
//function setting vars
    function set_vars($argvs = array()) {

foreach($argvs as $key => $row
   $this->tmp_vars[$key] = $row;
   
}//end function

//function for set var
    function set_var($key,$data) {
    
$this->tmp_vars[$key] = $data;

    }//end function

//function compile
    function compile() {
     
     $content file_get_contents($this->file);
     foreach($this->tmp_vars as $key => $row)
     $content str_replace("{".$key."}",$row,$content);
 $this->content $content;
 
}//end function

    
//function show_content() 
    function show_content() {

      return $this->content;
     
}//end function

}
//end class


class engine extends Template {
  
    
    

/****************************************************************************************************** function process_tags() 
*                Argvs :
*                       => $tags = array of tags with array of every tags
*                Example: $this->process_tags(array("b"=> array(arguments),"p" => array(arguments));
******************************************************************************************************************************/

function process_tags($tags = array()) {
    
//begin stuff  
      $str '';
  $str_end '';

//start processing
  foreach($tags as $key => $tag//take every row from array and work with it
        {
             //take all arguments from curent tag and save them in an array  
   $_argv $tag;
 //add curent tag to string without end tag (</tag>) 
   $str .= $this->new_tag($key,$_argv,false);
 //now save end tag
   if($key != "input")   
    $str_end "</{$key}".$str_end;  //save all end tags (first tag in array will become last in our string)        
    } //end foreach
$str .= $str_end//save tags and end tags in the same string

return $str//return all data 
 } //end function



/************************************************************************************************************** function new_tag() 
*                Argvs : 
*                        => $tag = name of the tag [example: b ==>> <b></b>]
*                        => $argvs = all arguments of tag[example: onclick => alert(1) ==>> <b onclick="alert(1)"></b>
*                                                         if argv is value then will become <b onclick="alert(1)">value</b>]
*                        => $end_tag = state of return tag[example if tag is false and tag name is `b` ==>> <b arguments>value]
*                        
*                 Concret example : $this->new_tag("b",array("value" => "test","onmouseover" => "alert(1)","onclick"=>"alert(2"),true);
*                                returns => <b onmouseover="alert(1)" onclick="alert(2")>test</b>
*                     if last argument is false 
*                                returns =>  <b onmouseover="alert(1)" onclick="alert(2")>test                      
*****************************************************************************************************************************************/

function new_tag($tag '',$argvs = array(),$end_tag true) {
    
//begin stuff  
  $value ""
      $str "<{$tag}";
  
    //working with tag arguments
   foreach($argvs as $key => $_argv) {
if($key == "value" && $tag != "input") {//if curent key is value and is not an input save value for later     
$value $_argv;
}
else { //else save argument
$str .= " {$key}=\"{$_argv}\"";
}    
   }//end foreach
   
//now save the value of this tag   
   if($tag == "input") {//if tag is input
$str .= " />"//close tag
   }
   else { //else handling value 
  $str .= ">{$value}"
  if($end_tag$str .= "</{$tag}>";
   } //end if
     return $str
//end function




/**************************************************************************************************** function create_table()
* Create table automatic : example
*
*
*    $arr = array("argvs"        => array("argument"  => "value",
        *                                         "argument2" => "value2"
        *                                         ),
*               "contents"     =>  array("tr1"   => array("argvs" => array("align"  => "left",
*                                                         "id"     => "test"
* ),
*                                                         "td1"    => array("argvs"     => array("argument" => "value"),
*                                                                           "contents"  => "data from tag"
*                                                                           ), 
*                                                         "td2"     => array("argvs"     => array("argument" => "value"),
*                                          "contents"  => "data from tag"
*                                           ),                
*       )
*  )
        *    );
*
*******************************************************************************************************************************/

function create_table($table_arr = array()) {

  //define table main string(this will be main code)
$table_string "<table";
  
  //get table arguments and save them   
   $tbl_argvs $table_arr["argvs"];  
  
   foreach($tbl_argvs as $key => $arg)
$table_string .= " {$key}=\"{$arg}\""$table_string .= ">"
  
 $tbl_contents $table_arr["contents"]; //main var for content and working with it
 
 foreach($tbl_contents as $line => $cur_stf) { //handling main lines from table
 //get tr arguments and set them
  $line ereg_replace("[0-9]{0,100}",null,$line);
  $table_string .= "<{$line}"//open line
  
  if(isset($cur_stf["argvs"])) {
  $tr_argvs $cur_stf["argvs"]; 
 //save arguments
  foreach($tr_argvs as $key => $arg)
   $table_string .= " {$key}=\"{$arg}\""$table_string .= ">"; unset($cur_stf["argvs"]);//end line arguments stuff
 //working with row
  foreach($cur_stf as $td_name => $td) { 
   $td_name ereg_replace("[0-9]{0,100}",null,$td_name);
   $table_string .= "<{$td_name}";//open tag
   
   if(isset($td["argvs"])) {
   foreach($td["argvs"] as $key => $arg
   $table_string .= " {$key}=\"{$arg}\""
   }
   $table_string .= ">{$td['contents']}"//end row arguments stuff
   $table_string .= "</{$td_name}>"//close tag
   }
 }
 else 
 {
   $table_string .= ">";
 }
  $table_string .= "</$line>"//close line
 }  
  return $table_string."</table>"//return string table+close table
  
}//end function


      
}
//end class
?>
# FILE :  [COLOR="DarkOrange"]table.php(POC)[create automatic tables][/COLOR]
Cod:
<?php
require("engine.php");


$engine = new engine("template");



    
$arr = array("argvs"         => array("align"  => "center",
                                      "border" => "2"
                                      ),
 "contents"     =>  array("tr1"   => array("argvs" => array("align"  => "left",
                                                            "id"     => "test"
    ),
                                          "td1"    => array("argvs"     => array("align" => "center"),
                                                            "contents"  => "test1"
                                                            ), 
                                          "td2"     => array("argvs"     => array("align" => "left"),
                           "contents"  => "test1"
                           )                
      ),
                          "tr2"  => array()
 )
             );

 
$argvs = array("Head"      => $engine->new_tag("title",array("value" => "table example")),
       "Content"   => $engine->create_table($arr)
                  );
  
$engine->set_var("Body_Argv",'bgcolor="#FFFF00"');//now set simple var
$engine->set_vars($argvs);// now set more than one var
$engine->compile(); //compile template 
$engine->show_content(); // show compiled template


?>
# FILE :  [COLOR="DarkOrange"]tags.php(POC)[create tags][/COLOR]
Cod:
<?php
require("engine.php");


$engine = new engine("template");

/*         This 2 arrays are for creating tags and arguments of them      */


$argvs = array("p"   => array("align"   => "center""id"     => "test"),
           "i"   => array("class"   => "test1"),
   "b"   => array("onclick" => """value" => "AnDrEwBoY"),
   "input" => array("type"  => "text","value" => "test")
               );
   
//end tags
//now begin engine stuff (first initiate array of all...
$argvs = array("Head"      => $engine->new_tag("title",array("value" => "create tags")),
               
"Body_Argv" => 'bgcolor="#FFFF00"',
   "Content"   => $engine->process_tags($argvs)
              );
  
//end initiate => now set vars
$engine->set_vars($argvs);
$engine->compile(); //compile template 
echo $engine->show_content(); // show compiled template


?>
Memorat
HostGator
Newbie
*
Mesaje: Multe