Maison  >  Article  >  développement back-end  >  Explication détaillée de l'utilisation et exemples de variables dans le moteur de modèles PHP Smarty

Explication détaillée de l'utilisation et exemples de variables dans le moteur de modèles PHP Smarty

墨辰丷
墨辰丷original
2018-06-04 09:47:371412parcourir

Cet article présente principalement l'utilisation des variables dans le moteur de template PHP Smarty. Il détaille les principes des modèles Smarty, les méthodes de téléchargement, les méthodes de configuration et les techniques d'utilisation des variables. Les amis dans le besoin peuvent s'y référer

1. Présentation :

Smarty est l'un des nombreux moteurs de modèles en PHP. Il s'agit d'une bibliothèque de classes écrite sur la base de PHP.

Avantages de Smarty :
1. Optimiser la vitesse d'accès au site Web
2. Séparation de la conception frontale Web et du programme

2. 🎜> 1. Vous devez télécharger la dernière version de Smarty depuis le site officiel de Smarty http://www.smarty.net/download.php Par exemple, la version téléchargée est : Smarty-2.6.18.tar.tar. ;

2. Décompressez le package compressé Smarty-2.6.18.tar.tar et vous trouverez beaucoup de fichiers et de dossiers À l'exception du dossier libs, il est inutile de supprimer tous les autres

.

3. Lorsque vous appelez le moteur de modèles Smarty, vous devez d'abord utiliser l'instruction require de PHP pour charger le fichier libs/Smarty.class.php.

3. Paramètres par défaut de la bibliothèque de classes Smarty

exigent Après avoir entré le fichier Smarty.class.php, si vous devez définir les membres dans la bibliothèque de classes Smarty, il y en a deux Il existe deux méthodes : l'une consiste à le modifier directement dans le fichier Smarty.class.php ; l'autre consiste à le re-spécifier après avoir initialisé la bibliothèque de classes, et cette dernière est généralement utilisée. Ce qui suit est une explication des attributs des membres dans la bibliothèque de classes Smarty :

1 $template_dir : définissez le répertoire dans lequel les fichiers de modèles du site Web sont stockés. Le répertoire par défaut est templates

2. : Définissez la compilation sur le site Web Le répertoire où sont stockés les fichiers, le répertoire par défaut est templates_c

3 $config_dir : Définit le répertoire utilisé pour stocker les fichiers de configuration spéciaux pour les modèles, la valeur par défaut est configs

4 $. left_delimiter : utilisé pour la variable de terminaison gauche dans le modèle, par défaut. Il s'agit de '{'
5 $right_delimiter : utilisé pour la variable de terminaison droite dans le modèle, la valeur par défaut est '}'

4. Utilisation de variables :

Tous les accès dans Smarty sont basés sur des variables. Ce qui suit est un exemple pour illustrer. Exemple d'idée : Le fichier principal introduit le fichier de configuration d'initialisation du modèle (init.inc.php) et une classe, et attribue des valeurs aux variables du modèle à afficher.

Tout d'abord, définissez le fichier init.inc.php comme fichier de configuration d'initialisation du modèle Smarty

init.inc.php


Le fichier principal index.php
<?php
  define(&#39;ROOT_PATH&#39;, dirname(__FILE__)); //定义网站根目录
  require ROOT_PATH.&#39;/libs/Smarty.class.php&#39;; //载入 Smarty 文件
  $_tpl = new Smarty();      //实例化一个对象
  $_tpl->template_dir = ROOT_PATH.&#39;/tpl/&#39;; //重新设置模板目录为根目录下的 tpl 目录
  $_tpl->compile_dir = ROOT_PATH.&#39;./com/&#39;; //重新设置编译目录为根目录下的 com 目录
  $_tpl->left_delimiter = &#39;<{&#39;;   //重新设置左定界符为 &#39;<{&#39;
  $_tpl->right_delimiter = &#39;}>&#39;;    //重新设置左定界符为 &#39;}>&#39;
?>

Le fichier modèle index.tpl du fichier principal index.php (rangé dans le /tpl /répertoire)
<?php
  require &#39;init.inc.php&#39;; //引入模板初始化文件
  require &#39;Persion.class.php&#39;; //载入对象文件
  global $_tpl;
  $title = &#39;This is a title!&#39;;
  $content = &#39;This is body content!&#39;;
  /*
  * 一、从 PHP 中分配给模板变量;
  * 动态的数据(PHP从数据库或文件,以及算法生成的变量)
  * 任何类型的数据都可以从PHP分配过来,主要包括如下
  * 标量:string、int、double、boolean
  * 复合:array、object
  *   NULL
  * 索引数组是直接通过索引来访问的
  * 关联数组,不是使用[关联下标]而是使用 . 下标的方式
  * 对象是直接通过->来访问的
  * */
  $_tpl->assign(&#39;title&#39;,$title);
  $_tpl->assign(&#39;content&#39;,$content); //变量的赋值
  $_tpl->assign(&#39;arr1&#39;,array(&#39;abc&#39;,&#39;def&#39;,&#39;ghi&#39;));  //索引数组的赋值
  $_tpl->assign(&#39;arr2&#39;,array(array(&#39;abc&#39;,&#39;def&#39;,&#39;ghi&#39;),array(&#39;jkl&#39;,&#39;mno&#39;,&#39;pqr&#39;))); //索引二维数组的赋值
  $_tpl->assign(&#39;arr3&#39;,array(&#39;one&#39;=>&#39;111&#39;,&#39;two&#39;=>&#39;222&#39;,&#39;three&#39;=>&#39;333&#39;)); //关联数组的赋值
  $_tpl->assign(&#39;arr4&#39;,array(&#39;one&#39;=>array(&#39;one&#39;=>&#39;111&#39;,&#39;two&#39;=>&#39;222&#39;),&#39;two&#39;=>array(&#39;three&#39;=>&#39;333&#39;,&#39;four&#39;=>&#39;444&#39;))); //关联二维数组的赋值
  $_tpl->assign(&#39;arr5&#39;,array(&#39;one&#39;=>array(&#39;111&#39;,&#39;222&#39;),array(&#39;three&#39;=>&#39;333&#39;,&#39;444&#39;))); //关联和索引混合数组的赋值
  $_tpl->assign(&#39;object&#39;,new Persion(&#39;小易&#39;, 10)); //对象赋值
  //Smarty 中数值也可以进行运算(+-*/^……)
  $_tpl->assign(&#39;num1&#39;,10);
  $_tpl->assign(&#39;num2&#39;,20);
  $_tpl->display(&#39;index.tpl&#39;);
?>

Persion.class.php
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title><{$title}></title>
  </head>  <body>
    变量的访问:<{$content}>
    <br />
    索引数组的访问:<{$arr1[0]}> <{$arr1[1]}> <{$arr1[2]}>
    <br />
    索引二维数组的访问: <{$arr2[0][0]}> <{$arr2[0][1]}> <{$arr2[0][2]}> <{$arr2[1][0]}> <{$arr2[1][1]}> <{$arr2[1][2]}>
    <br />
    关联数组的访问:<{$arr3.one}> <{$arr3.two}> <{$arr3.three}>
    <br />
    关联二维数组的访问:<{$arr4.one.one}> <{$arr4.one.two}> <{$arr4.two.three}> <{$arr4.two.four}>
    <br />
    关联和索引混合数组的访问:<{$arr5.one[0]}> <{$arr5.one[1]}> <{$arr5[0].three}> <{$arr5[0][0]}>
    <br />
    对象中成员变量的访问:<{$object->name}> <{$object->age}>
    <br />
    对象中方法的访问:<{$object->hello()}>
    <br />
    变量的运算:<{$num1+$num2}>
    <br />
    变量的混合运算:<{$num1+$num2*$num2/$num1+44}>
    <br />
  </body>
</html>

Résultat de l'exécution :
<?php
  class Persion {
   public $name; //为了访问方便,设定为public
   public $age;
   //定义一个构造方法
   public function __construct($name,$age) {
     $this->name = $name;
     $this->age = $age;
   }
   //定义一个 hello() 方法,输出名字和年龄
   public function hello() {
     return &#39;您好!我叫&#39;.$this->name.&#39;,今年&#39;.$this->age.&#39;岁了。&#39;;
   }
 }
?>

变量的访问:This is body content!
索引数组的访问:abc def ghi
索引二维数组的访问: abc def ghi jkl mno pqr
关联数组的访问:111 222 333
关联二维数组的访问:111 222 333 444
关联和索引混合数组的访问:111 222 333 444
对象中成员变量的访问:小易 10
对象中方法的访问:您好!我叫小易,今年10岁了。
变量的运算:30
变量的混合运算:94

Résumé : Ce qui précède est l'intégralité du contenu de cet article, j'espère qu'il pourra être utile à tout le monde étude.

Recommandations associées :

Explication détaillée de plusieurs méthodes permettant à PHP d'obtenir l'adresse IP d'accès des utilisateurs

Opérations de tableau couramment utilisées en PHP Explication détaillée de la méthode

php

La fonction utilise un nombre variable de méthodes paramètres


Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn