Heim  >  Artikel  >  Backend-Entwicklung  >  Verwendung und Beispielanalyse der PHP-Template-Engine Smarty Custom Variable Mediator

Verwendung und Beispielanalyse der PHP-Template-Engine Smarty Custom Variable Mediator

墨辰丷
墨辰丷Original
2018-06-04 09:29:321434Durchsuche

Dieser Artikel stellt hauptsächlich die Verwendung des Smarty-Variablenmediators der PHP-Vorlagen-Engine vor und analysiert die Implementierungsfähigkeiten des benutzerdefinierten Variablenmediators ausführlicher.

In PHP gibt es viele Funktionen zum Verarbeiten von Text. Nachdem Sie den zu verarbeitenden Text durch die Funktion verarbeitet haben, können Sie dann „assign()“ in der Smarty-Template-Engine aufrufen, um den Wert einer Variablen zuzuweisen und ihn der zuzuweisen Vorlage zur Anzeige.

Der Variable Mediator in Smarty ähnelt der Textverarbeitungsfunktion in PHP, die Syntax ist jedoch unterschiedlich. In Smarty folgt direkt der Name der Mediatorfunktion durch „|“. Parameter müssen nach „:“ hinzugefügt werden. Wenn mehrere Parameter vorhanden sind, addieren Sie sie einfach.

Format: {$var|modifier1:"Parameter1":Parameter2":Parameter3|modifier2|modifier3|...}

Definieren Sie den Moderator. Die Datei muss in Smarty platziert werden soll, lautet der spezifische Pfad: libs/plugins/. Der Dateiname muss im Format Smarty modifier.moderator name.php vorliegen

Im Folgenden wird die Verwendung benutzerdefinierter Variablenmoderatoren in Smarty anhand eines Beispiels veranschaulicht

Programmieridee: Erstellen Sie zwei Variablen Die Funktion des Mediators ist: einer zum Konvertieren von Text; einer zum Abfangen von Text.

init.inc.php (Smarty-Initialisierungsdatei)

<?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->compile_dir = ROOT_PATH.&#39;./com/&#39;; //设置编译文件目录
  $_tpl->left_delimiter = &#39;<{&#39;; //设置左定界符
  $_tpl->right_delimiter = &#39;}>&#39;; //设置右定界符
?>

index.php (Hauptdatei)

<?php
  define(&#39;CONST_VAR&#39;, &#39;ABC&#39;);
  require &#39;init.inc.php&#39;; //引入模板初始化文件
  global $_tpl;
  $_str = &#39;abcdEFGHigklmnOPQRSTuvwsYz&#39;; //定义一个字符串
  $_tpl->assign(&#39;str&#39;,$_str); //字符串赋值给str
  $_tpl->assign(&#39;str1&#39;,strtolower($_str)); //字符串全部转换为小写赋给str1
  $_tpl->assign(&#39;str2&#39;,strtoupper($_str)); //字符串全部转换为大写赋给str2
  $_tpl->assign(&#39;str3&#39;,ucfirst($_str)); //字符串首字母转换为大写赋给str3
  $_tpl->assign(&#39;str4&#39;,substr($_str, 0,15).&#39;...&#39;); //截取字符串前15个字符,后面的用&#39;...&#39;代替,并赋给str4
  $_tpl->assign(&#39;str5&#39;,strtoupper(substr($_str, 0,15)).&#39;...&#39;); //截取字符串前15个字符转换为大写,后面的用&#39;...&#39;代替,并赋给str4
  $_tpl->display(&#39;index.tpl&#39;); //引入模板
?>

tpl/index.tpl

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Smarty 中的变量调解器</title>
</head>
<body>
  <{$str}><br />   <!-- 输出字符串原形 -->
  <{$str1}><br />  <!-- 输出字符串转换为小写-->
  <{$str2}><br />  <!-- 输出字符串转换为大写 -->
  <{$str3}><br />  <!-- 输出字符串首字母大写 -->
  <{$str4}><br />  <!-- 截取字符串,截取15个字符串,后面的用&#39;...&#39;代替 -->
  <{$str5}><br />  <!-- 截取字符串,截取15个字符串,转换为大写,后面的用&#39;...&#39;代替 -->
  <!--
    您会发现,使用赋值过来的变量,使用起来不是很灵活,
    如果需要处理字符串,就必须得在主文件中设立一个新变量,并把值赋给这个新变量。
    使用变量调解器,可灵活的处理字符串
   -->
  <{$str|transform}><br />      <!-- 输出字符串原形-->
  <{$str|transform:"lower"}><br />  <!-- 输出字符串转换为小写-->
  <{$str|transform:"upper"}><br />  <!-- 输出字符串转换为大写 -->
  <{$str|transform:"firstdx"}><br /> <!-- 输出字符串首字母大写 -->
  <{$str|subString:0:15:"###"}><br /> <!-- 截取字符串,截取15个字符串,后面的用&#39;###&#39;代替 -->
  <{$str|subString:0:15:"@@@"|transform:"upper"}><br />  <!-- 截取字符串,截取15个字符串,后面的用&#39;@@@&#39;代替 -->
  <{$str|transform:"upper"|subString:0:15:"@@@"}><br />  <!-- 功能同上 -->
</body>
</html>

/libs/plugins/modifier.transform.php(Transform File Modifier )

<?php
  /**
   * smarty_modifier_transform
   * 字符串转换的变量调解器函数
   * @param string $string 处理字符串
   * @param string $type  处理类型
   */
  function smarty_modifier_transform($string,$type) {
    switch ($type) {
      case &#39;upper&#39; :
        $str = strtoupper($string);
        break;
      case &#39;lower&#39; :
        $str = strtolower($string);
        break;
      case &#39;firstdx&#39; :
        $str = ucfirst($string);
        break;
      default:
        $str = $string;
    }
    return $str;
  }
?>

lib/plugins/modifier.subString.php (Abfangtextmodifikator)

<?php
  /**
   * smarty_modifier_subString
   * 处理截取字符串调解器
   * @param string $string  处理字符串
   * @param int $start_num  开始位置,默认从头开始
   * @param int $end_num   结束位置,默认20
   * @param string $addTo   追加字符串,默认&#39;...&#39;
   */
  function smarty_modifier_subString($string,$start_num=0,$end_num=20,$addTo=&#39;...&#39;) {
    $_str = &#39;&#39;;
    if (strlen(substr($string, $start_num, $end_num))>=$end_num) {
      $_str = substr($string, $start_num, $end_num).$addTo;
    } else {
      $_str = substr($string, $start_num, $end_num);
    }
    return $_str;
  }
?>

Ausführungsergebnisse:

Durch das obige Beispiel wird gezeigt, dass die Mediatordatei im Plug-In-Verzeichnis Plugins von Smarty abgelegt werden muss und die Benennung den Regeln von Smarty entsprechen muss , also kann die von Ihnen geschriebene Mediatorfunktion aufgerufen werden. Ein weiterer zu beachtender Punkt ist, dass der definierte Funktionsname auch den Standardbenennungsregeln von Smarty entsprechen muss, zum Beispiel: smarty_modifier_XXX, und eine Modifikatordatei nur eine Funktion enthalten kann, nicht mehrere.

Zusammenfassung: Das Obige ist der gesamte Inhalt dieses Artikels, ich hoffe, dass er für das Studium aller hilfreich sein wird.

Verwandte Empfehlungen:

Definition und Verwendung der Funktion htmlentities() in PHP

PHP-Methoden und einfache Beispiele zum Generieren von Verifizierungscodes, die zum Aktualisieren angeklickt werden können

phpDetaillierte Erklärung, wie ein QR-Code generiert wird, der protokolliert werden kann durch Scannen mit dem Android-Client

Das obige ist der detaillierte Inhalt vonVerwendung und Beispielanalyse der PHP-Template-Engine Smarty Custom Variable Mediator. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn