PHP ビューエンジン Smarty の簡単な使い方
テンプレートエンジンとは
いつからかわかりませんが、HTML にサーバースクリプトを埋め込むことに不満を感じる人が現れ始めました。ただし、Microsoft の ASP であれ、オープンソースの PHP であれ、それらはすべてサーバー スクリプトが組み込まれた Web サーバーサイド言語です。そこで、プログラムのアプリケーションロジック(または業務アプリケーションのロジック)とWebページのプレゼンテーション(レイアウト)のロジックを分離できれば良いのではないかと考える人もいるのでは?
実際、この問題は長い間存在していました。インタラクティブな Web ページが普及したとき、ASP と PHP のユーザーは両方ともプログラム開発者であり、ビジュアル デザイナーでもありました。しかし、通常、これらのユーザーはプログラミングが得意か芸術が得意であり、その両方を同時に処理しようとすると、多くの脳細胞を失うことになります...
そこで登場したのがテンプレートエンジンです。テンプレート エンジンの目的は、上記の論理的分離の機能を実現することです。これにより、プログラム開発者はデータ制御や機能の実現に集中できる一方、ビジュアルデザイナーは Web ページのレイアウトに集中して、Web ページをよりプロフェッショナルに見せることができます。したがって、テンプレート エンジンは企業の Web サイト開発チームによる使用に適しており、誰もが専門知識を活用できます。
Smarty は PHP で書かれたテンプレート エンジンで、現在業界で最も有名な PHP テンプレート エンジンの 1 つです。論理コードと外部コンテンツを分離し、元々 HTML コードと混在していた PHP コードを論理的に分離する、管理と使用が簡単な方法を提供します。簡単に言うと、その目的は、PHP プログラマーをフロントエンド担当者から分離し、プログラマーがフロントエンド担当者のページ設計に影響を与えることなくプログラムの論理コンテンツを変更し、フロントエンド担当者が影響を与えずにページを再変更できるようにすることです。プログラムのプログラム ロジック これは、複数人の共同作業を伴うプロジェクトでは特に重要です。
以下は Smarty の基本的な使い方の記録です:
1.Smarty をインストールします
Smarty 公式 Web サイトから最初にダウンロードします: http://www.smarty.net/
次に、それを解凍し、ファイルのディレクトリ構造を次のように変更します: (実用目的のみ)
その他の未使用のファイルは削除できます。
2. Smarty を設定して簡単に使用します
次に、次のようなディレクトリ構造を作成します (これには、cache Smarty のキャッシュ ディレクトリ、template_c Smarty のコンパイル結果ディレクトリ、tpl Smarty のビュー テンプレート ディレクトリが含まれます。これらのディレクトリは、Smarty の構成中に参照されます)
test.php ファイルで Smarty を構成します: (最初に Smarty のメイン ファイル Smarty.class.php をインポートすることを忘れないでください)
<?php require('../smarty-3.1.29/libs/Smarty.class.php'); $smarty = new Smarty(); //Smarty的口诀“五配置方法” //五配置的介绍 $smarty->left_delimiter = "{"; //左定界符 $smarty->right_delimiter = "}"; //右定界符 $smarty->template_dir = "tpl"; //html模板的地址 //要把对应的目录创建好 $smarty->compile_dir = "template_c"; //模板编译生成的文件 $smarty->cache_dir = "cache"; //缓存 //以下是开启缓存的另两个配置。因为通常不用smarty的缓存机制,所以此项为了解。 $smarty->caching = true; //开启缓存 $smarty->cache_lifetime = 120; //缓存时间 //在smarty模板变量的赋值 $smarty->assign('articletitle', '文章标题'); //注册到smarty模板里面去(变量名,变量值) //展示编写好的模板,该函数能对模板进行编译和展示 $smarty->display('test.tpl'); ?>
$smarty->assign('articletitle', 'article title'); を通じて、変数articletitleをSmartyテンプレートに登録します。そして、ビュー test.tpl を使用します (もちろん、接尾辞は .html にすることができます。実際、Web 開発でも .html が使用されます)。
test.tpl (tpl ディレクトリに作成)
{$articletitle} <br>
これで、Smarty テンプレートに登録したばかりの変数articletitle を使用できるようになります。
アクセス プロセスは次のとおりです: test.php ファイルを実行し、Smarty オブジェクトを作成し、Smarty を設定し、変数articletitle を Smarty に登録し、表示するビューを選択します (Smarty はビューをコンパイルし、次のようにビューを {} でラップします)区切り文字 変数は解析されて変数の値になり、ページに表示されます。これにより、インターフェース層とロジック層の分離が実現されます。ロジック層はデータを Smarty に登録し、対応するインターフェイスの表示を制御します。インターフェイスはロジック層から返されたデータを表示に使用できます。
3. Smarty 変数へのアクセス
3.1. 1 次元配列へのアクセス
$arr = array('title'=>'smarty的学习', 'author' => '小明'); $smarty->assign('arr', $arr);
ビュー内 (通常は次の 2 つのメソッドにアクセスできます):
{$arr.title} {$arr.author} <br> {$arr['title']} {$arr['author']} <br>
3.2. 2 次元配列へのアクセス
$arr2 = array('articlecontent'=>array('title'=>'smarty的学习', 'author' => '小明')); $smarty->assign('arr2', $arr2);
ビュー内:
{$arr2['articlecontent']['title']} {$arr2['articlecontent']['author']} <br>
3.3. オブジェクトにアクセスする
class My_Object { function meth1($params) { return $params[0].'已经'.$params[1]; } } $myobj = new My_Object(); $smarty->assign("myobj",$myobj);
ビュー内:
输出对象 {$myobj->meth1(array('苹果','熟了'))} <br><br>
3.4. php で他のデータ型にアクセスする
PHP での他のデータ型へのアクセスは、PHP でのアクセスの使用と似ているため、ここではケースを示しません。
(注: 変数にアクセスする場合、HTML コード内の変数にアクセスするステートメントをネストできます)
4. 条件判断
4.1. 基本的な文構造 (ビュー (または HTML インターフェース) で使用)
{if $name eq "a1"} Welcome Sir. {elseif $name eq "a2"} Welcome Ma'am. {else} Welcome, whatever you are. {/if}
4.2. 条件修飾子は数多くありますが、簡単なものは次のとおりです: eq(==) neq(!=) gt(>) lt(
4.3. 修飾子と変数または定数はスペースで区切る必要があります
5. スマーティのサイクル
5.1、セクション
section と sectionelse には多くの関数とパラメータがあります。これは、Smarty がループ操作を実行するために使用する関数の 1 つです。
基本属性には名前とループが含まれます
name 属性とloop 属性に加えて、次の属性もあります
start 循环执行的初始位置。如果该值为负数,开始位置从数组的尾部算起。例如:如果数组中有7个元素,指定start为-2,那么指向当前数组的索引为5.非法值(超过了循环数组的下限)将被自动调整为最接近的合法值。
step 该值决定循环的步长。例如指定step = 2将只遍历下标为0、2、4等元素。如果step为负值,那么遍历数组的时候从后向前遍历。
max 设定循环最大执行次数。
show 决定是否显示该循环。
案例:
test.php中
//在smarty模板变量的赋值 $articlelist = array( array( "title" => "第一篇文章", "author" => "小王", "content" => "第一篇文章该写点啥呢" ), array( "title" => "第二篇文章", "author" => "小李", "content" => "又写了一篇不知所云的文章" ) ); $smarty->assign("articlelist", $articlelist);
视图中:
<!-- section 在smarty中函数的一种,函数以</函数名>结尾 --> section循环<br> {section name = article loop = $articlelist max=1} {$articlelist[article].title} {$articlelist[article].author} {$articlelist[article].content} <br> {/section} <br>
5.2、foreach循环(与PHP中的foreach类似)
视图中:
foreach循环<br> {foreach item = article from = $articlelist} {$article.title} {$article.author} {$article.content} <br> {foreachelse} <!-- 当数组为空是 显示下面的这句话--> 当前没有文章 {/foreach} <br> foreach循环——PHP形式<br> {foreach $articlelist as $article} {$article.title} {$article.author} {$article.content} <br> {foreachelse} 当前没有文章 {/foreach} <br>
建议使用类似PHP形式的foreach循环,便于记忆使用。
6、Smarty模板的引用
将其他模板引入到当前模板:使用include
在当前模板中使用,例如:
创建入口文件 test03.php
<?php require('../smarty-3.1.29/libs/Smarty.class.php'); $smarty = new Smarty(); //Smarty的自编口诀“五配置方法” //五配置的介绍 $smarty->left_delimiter = "{"; //左定界符 $smarty->right_delimiter = "}"; //右定界符 $smarty->template_dir = "tpl"; //html模板的地址 //要把对应的目录创建好 $smarty->compile_dir = "template_c"; //模板编译生成的文件 $smarty->cache_dir = "cache"; //缓存 //以下是开启缓存的另两个配置。因为通常不用smarty的缓存机制,所以此项为了解。 $smarty->caching = true; //开启缓存 $smarty->cache_lifetime = 120; //缓存时间 //展示编写好的模板,该函数能对模板进行编译和展示 $smarty->display('test03.tpl'); ?>
创建当前模板 test03.tpl
{include file="header.tpl" sitename="哈哈"} <!-- include还有其他属性(包括 sitename),其他属性的名称可以自定义,它的值可以传给引入的模板--> <!-- 这些自定义的属性仅仅只能在引入的文件中使用,如sitename属性只能在header.tpl中使用-->
其中被引入的模板为 header.tpl,属性sitename是自定义的,可以按照PHP的命名方式进行命名。表示传递到被引入的模板的变量,可以在被引入的模板中使用该变量。
header.tpl
头文件——{$sitename}
7、变量调节器
7.1、首字母大写 capitalize
如:{$articleTitle|capitalize}
7.2、字符串连接 cat
如:{$articleTitle|cat:" aaaa"}
7.3、日期格式化 date_format
如:{$yesterday|date_format}
{$yesterday|date_format:" :"%A, %B %e, %Y %H:%M:%S"}
7.4、为未赋值或为空的变量指定默认值default
如:{$articleTitle|default:"no title"}
7.5、转码escape
用于html转码,url转码,在没有转码的变量上转换单引号,十六进制转码,十六进制美化,或者javascript转码。默认是html转码。
7.6、小写lower 大写upper
将变量字符串小(大)写
如:{$articleTitle|lower} {$articleTitle|upper}
7.7、所有的换行符将被替换成
nl2br功能同PHP中nl2br()函数一样
如:{$articleTitle|nl2br}
7.8、其他函数
可以参见手册,原则上应该通过php直接处理完再赋值到smarty变量里,少用smarty函数。
8、使用php内置函数
基本格式为: {参数1|php内置函数名:参数2:参数3:...}
案例如下:
$smarty->assign('time',time()); $smarty->assign('str', 'abcdefg');
视图中:
Smarty函数的使用(使用PHP的内置函数)date -1<br> 在Smarty中函数的调用 | 函数名 ,其中“|”前为函数的第一个参数,函数名后为函数的第二个参数<br> 而在php中的date函数,第一个参数为时间戳,第二个参数为时间的格式。所以在使用下面的写法<br> {"Y-m-d"|date:$time} <br> Smarty函数的使用(使用PHP的内置函数)str_replace -2<br> <!-- 在php中的使用 str_replace('d','h',$str) --> {'d'|str_replace:'h':$str} <br>
9、自定义Smarty函数
案例:
//自定义函数 function test($params) { /*print_r($params); exit;*/ $p1 = $params['p1']; $p2 = $params['p2']; return '传入的参数1值为'.$p1.',传入的参数2值为'.$p2; } $smarty->registerPlugin('function', 'f_test', 'test');
这样就可以在视图中使用test函数了,如下:
Smarty函数的使用——自定义函数 -3 {f_test p1='abc' p2='edf'} <!-- p1 p2 参数(或者称为属性)会打包成数组发送给f_test函数-->
10、Smarty插件的学习
10.1、什么是Smarty插件:
Smarty的插件本质上是function函数
10.2、Smarty插件常用类型:
functions 函数插件
modifiers 修饰插件
block functions 区块函数插件
10.3、如何来制作、使用插件:
(1)使用registerPlugin方法注册写好的自定义的函数
(2)将写好的插件放入Smarty解压目录中lib目录下的plugins目录里
(3)php的内置函数,可以自动以修饰插件(变量调节器插件)的形式在模板里使用

Laravelは、直感的なフラッシュメソッドを使用して、一時的なセッションデータの処理を簡素化します。これは、アプリケーション内に簡単なメッセージ、アラート、または通知を表示するのに最適です。 データは、デフォルトで次の要求のためにのみ持続します。 $リクエスト -

PHPクライアントURL(CURL)拡張機能は、開発者にとって強力なツールであり、リモートサーバーやREST APIとのシームレスな対話を可能にします。尊敬されるマルチプロトコルファイル転送ライブラリであるLibcurlを活用することにより、PHP Curlは効率的なexecuを促進します

PHPロギングは、Webアプリケーションの監視とデバッグ、および重要なイベント、エラー、ランタイムの動作をキャプチャするために不可欠です。システムのパフォーマンスに関する貴重な洞察を提供し、問題の特定に役立ち、より速いトラブルシューティングをサポートします

Laravelは簡潔なHTTP応答シミュレーション構文を提供し、HTTP相互作用テストを簡素化します。このアプローチは、テストシミュレーションをより直感的にしながら、コード冗長性を大幅に削減します。 基本的な実装は、さまざまな応答タイプのショートカットを提供します。 Illuminate \ support \ facades \ httpを使用します。 http :: fake([[ 'google.com' => 'hello world'、 'github.com' => ['foo' => 'bar']、 'forge.laravel.com' =>

顧客の最も差し迫った問題にリアルタイムでインスタントソリューションを提供したいですか? ライブチャットを使用すると、顧客とのリアルタイムな会話を行い、すぐに問題を解決できます。それはあなたがあなたのカスタムにより速いサービスを提供することを可能にします

記事では、PHP 5.3で導入されたPHPの後期静的結合(LSB)について説明し、より柔軟な継承を求める静的メソッドコールのランタイム解像度を可能にします。 LSBの実用的なアプリケーションと潜在的なパフォーマ

この記事では、フレームワークにカスタム機能を追加し、アーキテクチャの理解、拡張ポイントの識別、統合とデバッグのベストプラクティスに焦点を当てています。


ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

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

SAP NetWeaver Server Adapter for Eclipse
Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。

MinGW - Minimalist GNU for Windows
このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。

ドリームウィーバー CS6
ビジュアル Web 開発ツール

WebStorm Mac版
便利なJavaScript開発ツール

ホットトピック



