目次
自定义min版smarty模板引擎MinSmarty.class.php文件及用法,smarty模板引擎
ホームページ バックエンド開発 PHPチュートリアル Smarty テンプレート エンジンのカスタマイズされた最小バージョン MinSmarty.class.php ファイルと使用法、smarty テンプレート エンジン_PHP チュートリアル

Smarty テンプレート エンジンのカスタマイズされた最小バージョン MinSmarty.class.php ファイルと使用法、smarty テンプレート エンジン_PHP チュートリアル

Jul 12, 2016 am 08:50 AM
smarty テンプレートエンジン カスタマイズ

自定义min版smarty模板引擎MinSmarty.class.php文件及用法,smarty模板引擎

本文实例讲述了自定义的min版smarty模板引擎MinSmarty.class.php文件。分享给大家供大家参考,具体如下:

一、smarty的优点

smarty是一个使用PHP写出来的模板引擎,是目前业界最著名的PHP模板引擎之一。它分离了逻辑代码和外在的内容,提供了一种易于管理和使用的方法,用来将原本与HTML代码混杂在一起PHP代码逻辑分离。简单的讲,目的就是要使PHP程序员同前端人员分离,使程序员改变程序的逻辑内容不会影响到前端人员的页面设计,前端人员重新修改页面不会影响到程序的程序逻辑,这在多人合作的项目中显的尤为重要。

二、写一个简单的smarty模版类

具体代码如下:

<&#63;php
 class MinSmarty{
 // 模版文件的路径
 var $template_dir = "./templates/";
 // 模版文件被替换后的文件 命名格式为com_对应的tpl.php
 var $complie_dir = "./templates_c/";
 // 存放变量值
 var $tpl_vars = array();
 // 这里使用两个方法实现assign 和 display
 function assign($tpl_var,$var=NULL){
  if($tpl_var!=NULL){
  $this->tpl_vars[$tpl_var]=$var;
  }
 }
 // 这里编写display方法的实现
 function display($tpl_file){
  // 读取这个模版文件->替换可以运行的php文件(编译后文件)
  $tpl_file_path=$this->template_dir.$tpl_file;  // 模版文件的路径
  $complie_file_path=$this->complie_dir."com_".$tpl_file.".php";  //编译后的文件路径
  // 判断文件是否存在
  if(!file_exists($tpl_file_path)){
  return false;
  }
  // 不让每次执行都生成编译文件
  if(!file_exists($complie_file_path) || filemtime($tpl_file_path)>filemtime($complie_file_path)){
  $fp1_file_con=file_get_contents($tpl_file_path); // 获取模版文件的全部内容
  // 这里进行正则替换把  模版文件中的代码 {$title} 替换成 <&#63;php echo $this->tpl_vars['title'];&#63; >
  $pattern=array(
     '/\{\s*\$([a-zA-Z_][a-zA-Z0-9_]*)\s*\}/i'
  );
  $replace=array(
     '<&#63;php echo $this->tpl_vars["${1}"];&#63;>'
  );
  $new_str=preg_replace($pattern,$replace,$fp1_file_con);  // 替换后的内容
  file_put_contents($complie_file_path,$new_str);  // 替换后的内容生成一个php文件
  }
  // 引入编译后的文件
  include_once("$complie_file_path");
 }
 }
&#63;>
ログイン後にコピー

下面的代码是对该类的测试

intro.php代码如下:

<&#63;php
  include_once("MySmarty.class.php");
  $title="这里是标题";
  $content="这里是内容111111";
  $MySmarty=new MySmarty();
  $MySmarty->assign("title",$title);
  $MySmarty->assign("content",$content);
  $MySmarty->display("intro.tpl");
&#63;>

ログイン後にコピー

模版如下:

intro.tpl:

<!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}
</body>
</html>

ログイン後にコピー

PS:这里推荐几款本站的格式化/美化/转换工具可以帮助你整理杂乱无章的代码,相信大家在以后的开发中能够用得上:

php代码在线格式化美化工具:
http://tools.jb51.net/code/phpformat

JavaScript代码美化/压缩/格式化/加密工具:
http://tools.jb51.net/code/jscompress

在线XML格式化/压缩工具:
http://tools.jb51.net/code/xmlformat

JSON代码格式化美化工具:
http://tools.jb51.net/code/json

在线XML/JSON互相转换工具:
http://tools.jb51.net/code/xmljson

json代码在线格式化/美化/压缩/编辑/转换工具:
http://tools.jb51.net/code/jsoncodeformat

sql代码在线格式化美化工具:
http://tools.jb51.net/code/sqlcodeformat

更多关于Smarty相关内容感兴趣的读者可查看本站专题:《smarty模板入门基础教程》、《PHP模板技术总结》、《PHP基于pdo操作数据库技巧总结》、《PHP运算与运算符用法总结》、《PHP网络编程技巧总结》、《PHP基本语法入门教程》、《php面向对象程序设计入门教程》、《php字符串(string)用法总结》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》

希望本文所述对大家基于smarty模板的PHP程序设计有所帮助。

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/1133123.htmlTechArticle自定义min版smarty模板引擎MinSmarty.class.php文件及用法,smarty模板引擎 本文实例讲述了自定义的min版smarty模板引擎MinSmarty.class.php文件。分享给...
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Netflix でカスタム アバターをすばやくセットアップする方法 Netflix でカスタム アバターをすばやくセットアップする方法 Feb 19, 2024 pm 06:33 PM

Netflix のアバターは、ストリーミング ID を視覚的に表現したものです。ユーザーはデフォルトのアバターを超えて自分の個性を表現できます。 Netflix アプリでカスタム プロフィール写真を設定する方法については、この記事を読み続けてください。 Netflix でカスタム アバターをすばやく設定する方法 Netflix には、プロフィール写真を設定する機能が組み込まれていません。ただし、ブラウザに Netflix 拡張機能をインストールすることでこれを行うことができます。まず、Netflix 拡張機能のカスタム プロフィール画像をブラウザにインストールします。 Chrome ストアで購入できます。拡張機能をインストールした後、ブラウザで Netflix を開き、アカウントにログインします。右上隅にあるプロフィールに移動し、をクリックします

Win11で背景画像をカスタマイズする方法 Win11で背景画像をカスタマイズする方法 Jun 30, 2023 pm 08:45 PM

Win11で背景画像をカスタマイズするにはどうすればよいですか?新しくリリースされた win11 システムには多くのカスタム機能がありますが、多くの友人はこれらの機能の使い方を知りません。一部の友人は、背景画像が比較的単調だと考えており、背景画像をカスタマイズしたいと考えていますが、背景画像をカスタマイズする方法がわかりません。背景画像を定義する方法がわからない場合、エディターは次の手順をまとめています。 Win11 で背景画像をカスタマイズするには、以下をご覧ください。 Win11 で背景画像をカスタマイズする手順: 1. 図に示すように、デスクトップの [勝利] ボタンをクリックし、ポップアップ メニューの [設定] をクリックします。 2. 図に示すように、設定メニューに入り、「個人用設定」をクリックします。 3. 図に示すように、[Personalization] に入り、[Background] をクリックします。 4. 背景設定を入力し、クリックして写真を参照します

Python でベン図を作成およびカスタマイズするにはどうすればよいですか? Python でベン図を作成およびカスタマイズするにはどうすればよいですか? Sep 14, 2023 pm 02:37 PM

ベン図は、セット間の関係を表すために使用される図です。ベン図を作成するには、matplotlib を使用します。 Matplotlib は、対話型のチャートやグラフを作成するために Python で一般的に使用されるデータ視覚化ライブラリです。インタラクティブな画像やグラフの作成にも使用されます。 Matplotlib は、チャートやグラフをカスタマイズするための多くの関数を提供します。このチュートリアルでは、ベン図をカスタマイズするための 3 つの例を説明します。 Example の中国語訳は次のとおりです: Example これは 2 つのベン図の交差を作成する簡単な例です。最初に、必要なライブラリをインポートし、ベンをインポートしました。次に、データセットを Python セットとして作成し、その後「venn2()」関数を使用して

Eclipseでショートカットキー設定をカスタマイズする方法 Eclipseでショートカットキー設定をカスタマイズする方法 Jan 28, 2024 am 10:01 AM

Eclipse でショートカット キーの設定をカスタマイズするにはどうすればよいですか?開発者にとって、ショートカット キーをマスターすることは、Eclipse でコーディングする際の効率を向上させるための鍵の 1 つです。強力な統合開発環境として、Eclipse は多くのデフォルトのショートカット キーを提供するだけでなく、ユーザーが独自の好みに応じてショートカット キーをカスタマイズすることもできます。この記事では、Eclipseでショートカットキーの設定をカスタマイズする方法と具体的なコード例を紹介します。 Eclipseを開く まず、Eclipseを開いて次のように入力します。

iOS 17を搭載したiPhoneのApple Musicでクロスフェードを有効にしてカスタマイズする方法 iOS 17を搭載したiPhoneのApple Musicでクロスフェードを有効にしてカスタマイズする方法 Jun 28, 2023 pm 12:14 PM

iPhone の iOS 17 アップデートは、Apple Music にいくつかの大きな変更をもたらします。これには、プレイリストで他のユーザーとコラボレーションしたり、CarPlay を使用してさまざまなデバイスから音楽再生を開始したりすることが含まれます。これらの新機能の 1 つは、Apple Music でクロスフェードを使用できる機能です。これにより、トラック間をシームレスに移行できるようになり、複数のトラックを聴く場合に優れた機能になります。クロスフェードは全体的なリスニング体験を向上させるのに役立ち、トラックが変わったときに驚いたり、体験から脱落したりすることがなくなります。この新機能を最大限に活用したい場合は、iPhone での使用方法を次に示します。最新の情報が必要な Apple Music のクロスフェードを有効にしてカスタマイズする方法

CakePHP でカスタム ページネーションを作成するにはどうすればよいですか? CakePHP でカスタム ページネーションを作成するにはどうすればよいですか? Jun 04, 2023 am 08:32 AM

CakePHP は、開発者に多くの便利なツールと機能を提供する強力な PHP フレームワークです。その 1 つはページネーションです。これは、大量のデータを複数のページに分割し、閲覧と操作を容易にするのに役立ちます。デフォルトでは、CakePHP はいくつかの基本的なページネーション メソッドを提供しますが、場合によってはカスタムのページネーション メソッドを作成する必要がある場合があります。この記事では、CakePHP でカスタム ページネーションを作成する方法を説明します。ステップ 1: カスタム ページネーション クラスを作成する まず、カスタム ページネーション クラスを作成する必要があります。これ

CodeIgniter でカスタムミドルウェアを実装する方法 CodeIgniter でカスタムミドルウェアを実装する方法 Jul 29, 2023 am 10:53 AM

CodeIgniter でカスタム ミドルウェアを実装する方法 はじめに: 最新の Web 開発では、ミドルウェアがアプリケーションで重要な役割を果たします。これらは、リクエストがコントローラーに到達する前または後に、共有処理ロジックを実行するために使用できます。 CodeIgniter は、人気のある PHP フレームワークとして、ミドルウェアの使用もサポートしています。この記事では、CodeIgniter でカスタム ミドルウェアを実装する方法を紹介し、簡単なコード例を示します。ミドルウェアの概要: ミドルウェアは一種のリクエストです

Vue3 の render 関数: カスタム レンダリング関数 Vue3 の render 関数: カスタム レンダリング関数 Jun 18, 2023 pm 06:43 PM

Vue は、開発者がインタラクティブなフロントエンド アプリケーションを構築するのに役立つ多くの便利な関数と API を提供する人気の JavaScript フレームワークです。 Vue3 のリリースに伴い、レンダリング機能が重要なアップデートになりました。この記事では、Vue3 のレンダリング関数の概念と目的、およびそれを使用してレンダリング関数をカスタマイズする方法を紹介します。レンダリング関数とは何ですか? Vue ではテンプレートが最も一般的に使用されるレンダリング方法ですが、Vue3 では別の方法を使用できます。

See all articles