[PHP] Optimisation pour un template

Optimisation pour un template [PHP] - Programmation

Marsh Posté le 16-07-2002 à 20:31:14    

Voila mon code source :
 

<?
if($_POST['action']=="Envoyer" ){
 if(!$_POST['auteur']) $va="Champs vide";
 if(!$_POST['mail']) $vm="Champs vide";
 if(!$_POST['titre']) $vt="Champs vide";
 if(!$_POST['text']) $vc="Champs vide";
}
include "includes/template.php3";
$body = new Template("includes/templates" );
$body->set_file("page","body.tpl" );
$body->set_var("VERIF AUTEUR",$va);
$body->set_var("VERIF MAIL",$vm);
$body->set_var("VERIF TITRE",$vt);
$body->set_var("VERIF CORPS",$vc);
$body->set_var("AUTEUR",$auteur);
$body->set_var("MAIL",$mail);
$body->set_var("TITRE",$titre);
$body->set_var("CORPS",$text);
$body->pparse("MyOutput","page" );
?>


 
Je voudrais faire qu'un set_var, donc j'ai penser faire un array :
 

$nom1=array("VERIF AUTEUR", "VERIF MAIL", "VERIF TITRE", "VERIF CORPS", "AUTEUR", "MAIL", "TITRE", "CORPS" );
$nom2=array($va, $vm, $vt, $vc, $_POST['auteur'], $_POST['mail'], $_POST['titre'], $_POST['text']);
$body->set_var($nom1,$nom2);


 
Mais sa ne marche pas  :cry:  

Reply

Marsh Posté le 16-07-2002 à 20:31:14   

Reply

Marsh Posté le 16-07-2002 à 22:11:06    

tout dépend de la façon dont a été codé ton objet, ici on ne pourra t'aider que si tu nous dévoile ce qui est caché dans ta boite noire: template.php3


Message édité par THE REAL SMILEY le 16-07-2002 à 22:11:27

---------------
༼ つ ◕_◕ ༽つ
Reply

Marsh Posté le 16-07-2002 à 22:16:51    

Voila template.php3
 

<?php
/*
 * Session Management for PHP3
 *
 * (C) Copyright 1999-2000 NetUSE GmbH
 *                    Kristian Koehntopp
 *
 * $Id: template.inc,v 1.5 2000/07/12 18:22:35 kk Exp $
 *
 */
 
class Template {
  var $classname = "Template";
 
  /* if set, echo assignments */
  var $debug     = false;
 
  /* $file[handle] = "filename"; */
  var $file  = array();
 
  /* relative filenames are relative to this pathname */
  var $root   = "";
 
  /* $varkeys[key] = "key"; $varvals[key] = "value"; */
  var $varkeys = array();
  var $varvals = array();
 
  /* "remove"  => remove undefined variables
   * "comment" => replace undefined variables with comments
   * "keep"    => keep undefined variables
   */
  var $unknowns = "remove";
 
  /* "yes" => halt, "report" => report error, continue, "no" => ignore error quietly */
  var $halt_on_error  = "yes";
 
  /* last error message is retained here */
  var $last_error     = "";
 
 
  /***************************************************************************/
  /* public: Constructor.
   * root:     template directory.
   * unknowns: how to handle unknown variables.
   */
  function Template($root = ".", $unknowns = "remove" ) {
    $this->set_root($root);
    $this->set_unknowns($unknowns);
  }
 
  /* public: setroot(pathname $root)
   * root:   new template directory.
   */
  function set_root($root) {
    if (!is_dir($root)) {
      $this->halt("set_root: $root is not a directory." );
      return false;
    }
 
    $this->root = $root;
    return true;
  }
 
  /* public: set_unknowns(enum $unknowns)
   * unknowns: "remove", "comment", "keep"
   *
   */
  function set_unknowns($unknowns = "keep" ) {
    $this->unknowns = $unknowns;
  }
 
  /* public: set_file(array $filelist)
   * filelist: array of handle, filename pairs.
   *
   * public: set_file(string $handle, string $filename)
   * handle: handle for a filename,
   * filename: name of template file
   */
  function set_file($handle, $filename = "" ) {
    if (!is_array($handle)) {
      if ($filename == "" ) {
        $this->halt("set_file: For handle $handle filename is empty." );
        return false;
      }
      $this->file[$handle] = $this->filename($filename);
    } else {
      reset($handle);
      while(list($h, $f) = each($handle)) {
        $this->file[$h] = $this->filename($f);
      }
    }
  }
 
  /* public: set_block(string $parent, string $handle, string $name = "" )
   * extract the template $handle from $parent,
   * place variable {$name} instead.
   */
  function set_block($parent, $handle, $name = "" ) {
    if (!$this->loadfile($parent)) {
      $this->halt("subst: unable to load $parent." );
      return false;
    }
    if ($name == "" )
      $name = $handle;
 
    $str = $this->get_var($parent);
    //$reg = "/<!--\s+BEGIN $handle\s+-->(.*)\n\s*<!--\s+END $handle\s+-->/sm";
    $reg = "/<!--\s+BEGIN $handle\s+-->(.*)<!--\s+END $handle\s+-->/sm";
    preg_match_all($reg, $str, $m);
    $str = preg_replace($reg, "{" . "$name}", $str);
    $this->set_var($handle, $m[1][0]);
    $this->set_var($parent, $str);
  }
 
  /* public: set_var(array $values)
   * values: array of variable name, value pairs.
   *
   * public: set_var(string $varname, string $value)
   * varname: name of a variable that is to be defined
   * value:   value of that variable
   */
  function set_var($varname, $value = "" ) {
    if (!is_array($varname)) {
      if (!empty($varname))
        if ($this->debug) print "scalar: set *$varname* to *$value*<br>\n";
        $this->varkeys[$varname] = "/".$this->varname($varname)."/";
        $this->varvals[$varname] = $value;
    } else {
      reset($varname);
      while(list($k, $v) = each($varname)) {
        if (!empty($k))
          if ($this->debug) print "array: set *$k* to *$v*<br>\n";
          $this->varkeys[$k] = "/".$this->varname($k)."/";
          $this->varvals[$k] = $v;
      }
    }
  }
 
  /* public: subst(string $handle)
   * handle: handle of template where variables are to be substituted.
   */
  function subst($handle) {
    if (!$this->loadfile($handle)) {
      $this->halt("subst: unable to load $handle." );
      return false;
    }
 
    $str = $this->get_var($handle);
    $str = @preg_replace($this->varkeys, $this->varvals, $str);
    return $str;
  }
 
  /* public: psubst(string $handle)
   * handle: handle of template where variables are to be substituted.
   */
  function psubst($handle) {
    print $this->subst($handle);
 
    return false;
  }
 
  /* public: parse(string $target, string $handle, boolean append)
   * public: parse(string $target, array  $handle, boolean append)
   * target: handle of variable to generate
   * handle: handle of template to substitute
   * append: append to target handle
   */
  function parse($target, $handle, $append = false) {
    if (!is_array($handle)) {
      $str = $this->subst($handle);
      if ($append) {
        $this->set_var($target, $this->get_var($target) . $str);
      } else {
        $this->set_var($target, $str);
      }
    } else {
      reset($handle);
      while(list($i, $h) = each($handle)) {
        $str = $this->subst($h);
        $this->set_var($target, $str);
      }
    }
 
    return $str;
  }
 
  function pparse($target, $handle, $append = false) {
    print $this->parse($target, $handle, $append);
    return false;
  }
 
  /* public: get_vars()
   */
  function get_vars() {
    reset($this->varkeys);
    while(list($k, $v) = each($this->varkeys)) {
      $result[$k] = $this->varvals[$k];
    }
 
    return $result;
  }
 
  /* public: get_var(string varname)
   * varname: name of variable.
   *
   * public: get_var(array varname)
   * varname: array of variable names
   */
  function get_var($varname) {
    if (!is_array($varname)) {
      return $this->varvals[$varname];
    } else {
      reset($varname);
      while(list($k, $v) = each($varname)) {
        $result[$k] = $this->varvals[$k];
      }
 
      return $result;
    }
  }
 
  /* public: get_undefined($handle)
   * handle: handle of a template.
   */
  function get_undefined($handle) {
    if (!$this->loadfile($handle)) {
      $this->halt("get_undefined: unable to load $handle." );
      return false;
    }
 
    preg_match_all("/\{([^}]+)\}/", $this->get_var($handle), $m);
    $m = $m[1];
    if (!is_array($m))
      return false;
 
    reset($m);
    while(list($k, $v) = each($m)) {
      if (!isset($this->varkeys[$v]))
        $result[$v] = $v;
    }
 
    if (count($result))
      return $result;
    else
      return false;
  }
 
  /* public: finish(string $str)
   * str: string to finish.
   */
  function finish($str) {
    switch ($this->unknowns) {
      case "keep":
      break;
 
      case "remove":
        $str = preg_replace('/{[^ \t\r\n}]+}/', "", $str);
      break;
 
      case "comment":
        $str = preg_replace('/{([^ \t\r\n}]+)}/', "<!-- Template $handle: Variable \\1 undefined -->", $str);
      break;
    }
 
    return $str;
  }
 
  /* public: p(string $varname)
   * varname: name of variable to print.
   */
  function p($varname) {
    print $this->finish($this->get_var($varname));
  }
 
  function write($varname,$file)
  {
   $myfile=fopen($file,"w+" );
   fputs($myfile,$this->finish($this->get_var($varname)));
  }
 
  function get($varname) {
    return $this->finish($this->get_var($varname));
  }
 
  /***************************************************************************/
  /* private: filename($filename)
   * filename: name to be completed.
   */
  function filename($filename) {
    if (substr($filename, 0, 1) != "/" ) {
      $filename = $this->root."/".$filename;
    }
 
    if (!file_exists($filename))
      $this->halt("filename: file $filename does not exist." );
 
    return $filename;
  }
 
  /* private: varname($varname)
   * varname: name of a replacement variable to be protected.
   */
  function varname($varname) {
    return preg_quote("{".$varname."}" );
  }
 
  /* private: loadfile(string $handle)
   * handle:  load file defined by handle, if it is not loaded yet.
   */
  function loadfile($handle) {
    if (isset($this->varkeys[$handle]) and !empty($this->varvals[$handle]))
      return true;
 
    if (!isset($this->file[$handle])) {
      $this->halt("loadfile: $handle is not a valid handle." );
      return false;
    }
    $filename = $this->file[$handle];
 
    $str = implode("", @file($filename));
    if (empty($str)) {
      $this->halt("loadfile: While loading $handle, $filename does not exist or is empty." );
      return false;
    }
 
    $this->set_var($handle, $str);
 
    return true;
  }
 
  /***************************************************************************/
  /* public: halt(string $msg)
   * msg:    error message to show.
   */
  function halt($msg) {
    $this->last_error = $msg;
 
    if ($this->halt_on_error != "no" )
      $this->haltmsg($msg);
 
    if ($this->halt_on_error == "yes" )
      die("<b>Halted.</b>" );
 
    return false;
  }
 
  /* public, override: haltmsg($msg)
   * msg: error message to show.
   */
  function haltmsg($msg) {
    printf("<b>Template Error:</b> %s<br>\n", $msg);
  }
}
?>

Reply

Marsh Posté le 16-07-2002 à 22:22:04    

en fait dans ton tableau, il faut que tu mette une valeur sur deux, je m'explique:
 


$tontableau=array("VERIF AUTEUR", $va, "VERIF MAIL", $vm, ........


 
voila, ca devrait fonctionner


---------------
༼ つ ◕_◕ ༽つ
Reply

Marsh Posté le 16-07-2002 à 22:40:26    

Et apres je fais :
 
$body->set_file($montableau); ?

Reply

Marsh Posté le 16-07-2002 à 22:52:28    

tu change rien au reste, tu remplace juste tes set_var par un seul


---------------
༼ つ ◕_◕ ༽つ
Reply

Marsh Posté le 16-07-2002 à 23:12:51    

<?
if($_POST['action']=="Envoyer" ){
 if(!$_POST['auteur']) $va="Champs vide";
 if(!$_POST['mail']) $vm="Champs vide";
 if(!$_POST['titre']) $vt="Champs vide";
 if(!$_POST['text']) $vc="Champs vide";
}
include "includes/template.php3";
$body = new Template("includes/templates" );
$body->set_file("page","body.tpl" );
 
$nom=array("VERIF AUTEUR", $va, "VERIF MAIL", $vm, "VERIF TITRE", $vt, "VERIF CORPS", $vc,
           "AUTEUR", $auteur, "MAIL", $mail, "TITRE", $titre, "CORPS", $corps);
$body->set_var($nom);
 
$body->pparse("MyOutput","page" );
?>
 
Marche pas :
 
http://172.181.234.166/FINAL/body.php3

Reply

Marsh Posté le 16-07-2002 à 23:35:50    

il dois y avoir une doc non ? pour cet objet ?


Message édité par THE REAL SMILEY le 16-07-2002 à 23:36:22

---------------
༼ つ ◕_◕ ༽つ
Reply

Marsh Posté le 16-07-2002 à 23:44:12    

Bas  :??:  ptete !

Reply

Marsh Posté le 16-07-2002 à 23:50:21    

2 syntaxes pour les tableaux associatifs :
 
$nom["VERIF AUTEUR"] = $va;
$nom["VERIF MAIL"] = $vm;
$nom["VERIF TITRE"] = $vt;
$nom["VERIF CORPS"] = $vc;
$nom["AUTEUR"] = $auteur;
$nom["MAIL"] = $mail;
$nom["TITRE"] = $titre;
$nom["CORPS"] = $corps;
 
OU  
 
$nom=array("VERIF AUTEUR" => $va, "VERIF MAIL" => $vm, "VERIF TITRE" =>$vt, "VERIF CORPS" => $vc, "AUTEUR" => $auteur, "MAIL" => $mail, "TITRE" => $titre, "CORPS" => $corps);
 
Ensuite :
$body->set_var($nom);
devrait fonctionner !


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
Reply

Marsh Posté le 16-07-2002 à 23:50:21   

Reply

Marsh Posté le 16-07-2002 à 23:52:02    

Dans la fonction set_var :
 
while(list($k, $v) = each($varname))
 
Donc $varname est un tableau associatif !


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
Reply

Marsh Posté le 17-07-2002 à 00:52:50    

Merci mara's dad sa marche nickel  :jap:

Reply

Marsh Posté le 17-07-2002 à 01:00:05    

c koi un template ??
(je me demande car je fais du php a haute dose ces derniers temps, et je sais pas ce que c ...)

Reply

Marsh Posté le 17-07-2002 à 01:09:33    

Reply

Marsh Posté le 17-07-2002 à 01:27:55    

okyyy thx

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed