目次
PHP テンプレート エンジン Smarty の詳細な紹介、テンプレート Smarty の詳細な紹介
ホームページ バックエンド開発 PHPチュートリアル PHP テンプレート エンジン Smarty の詳細な紹介、テンプレート Smarty_PHP の詳細な紹介チュートリアル

PHP テンプレート エンジン Smarty の詳細な紹介、テンプレート Smarty_PHP の詳細な紹介チュートリアル

Jul 13, 2016 am 09:52 AM
codeigniter php smarty テンプレートエンジン

PHP テンプレート エンジン Smarty の詳細な紹介、テンプレート Smarty の詳細な紹介

/*
1. スマートとは何ですか?

smarty は、PHP で書かれたテンプレート PHP テンプレート エンジンです。簡単に言えば、
その目的は、PHP プログラマーをアーティストから分離することです。プログラマーがプログラムのロジックの内容を変更しても、アーティストがページを変更しても、プログラムのプログラム ロジックには影響しません。これは、複数人で行うプロジェクトでは特に重要であるようです。

2. Smarty の利点:

1. 速度: Smarty を使用して作成されたプログラムは、他のテンプレート エンジン テクノロジーと比較して最大速度の向上を達成できます。

2. コンパイル済みタイプ: Smarty で書かれたプログラムは、実行時に非テンプレート テクノロジの PHP ファイルにコンパイルする必要があります。このファイルは、次回のテンプレート作成時に、PHP と HTML を組み合わせてこのファイルに直接変換されます。テンプレートを再コンパイルする代わりに、 にアクセスします (ソースプログラムが変更されていない場合)

3. キャッシュ技術:smarty が選択したキャッシュ技術。smarty のキャッシュ属性が true に設定されている場合、smarty が設定したキャッシュタイム期間内に、ユーザーが最終的に閲覧する HTML ファイルを静的 HTML ページにキャッシュできます。 WEB リクエストはこの静的 HTML ファイルに直接変換されます。これは静的 HTML ファイルを呼び出すのと同じです。

4. プラグインテクノロジー: Smarty はプラグインをカスタマイズできます。プラグインは実際にはいくつかのカスタム関数です。

5. If/elseif/else/endif をテンプレートで使用できます。テンプレート ファイルで判断ステートメントを使用すると、テンプレートを非常に便利に再フォーマットできます。

3. Smarty が適さない場所:

1. リアルタイムで更新する必要があるコンテンツ。たとえば、頻繁にデータを更新する必要がある株式表示のように、このタイプのプログラムに Smarty を使用すると、テンプレートの処理が遅くなります。

2. 小さなプロジェクト。プロジェクトが単純であるため、アーティストとプログラマーの両方が単純な小規模プロジェクトの場合、smarty を使用すると、迅速な PHP 開発という利点が失われます。


4. Smarty のディレクトリ構造とバージョン
Smarty の公式 Web サイト、www.smarty.net/download.php を開きます。 Smarty 3.1.12 をダウンロードします。 Linux 版と Windows 版にはそれぞれ tar.gz と zip があります。

Smarty-stable-3.1.12 をダウンロードして解凍すると、Smarty-3.1.12 フォルダーが作成されます。このフォルダーには、demo と libs の 2 つのメイン フォルダーが含まれています

デモ フォルダーはサンプル フォルダーであり、デフォルトのフォルダー構造が含まれており、プログラム コードを記述するメイン フォルダーです。デモ内のフォルダーの名前はすべて、smarty のデフォルトのディレクトリ構造名です。smarty の対応する属性値を変更することで、フォルダー名を希望の名前に変更できます。
libs は Smarty コードのソース フォルダーであり、通常は移動されません。

/libs/Smarty.class.php #メインファイル

/libs/sysplugins/ #内部プラグイン

/libs /plugins/ #外部プラグイン、自由に拡張可能

/demo/cahce/ #キャッシュ ファイルを配置します

/demo/configs / #ロードできる設定ファイルを配置します

/demo/templates/ #テンプレートファイルを配置します

/demo/templates_c/ #コンパイルしたテンプレートファイルを配置します

解凍した Smarty-3.1.12 フォルダーの名前を必要なプロジェクト名に変更できます。また、デモをエンコーディングを保存したい特定のフォルダーの名前に変更することもできます

2.Smarty-3.1.12 のデバッグ

独自のファイルを作成し、デモフォルダーにindex.phpを作成します。
テンプレートディレクトリにテンプレートindex.tplを作成します
(ほぼすべてのテキスト ファイルの拡張子にすることができます。一般的に使用されるのは、tpl、php、html です。後者の 2 つはブラウザから直接アクセスでき、安全ではないため、使用することはお勧めできません。httpd を設定できます。 Apache の .conf を使用して、.tpl ファイルにアクセスするか、Web サイトのドキュメント ツリーの外にテンプレート ディレクトリを配置します)

*/

//index.php コード
require('../libs/Smarty.class.php');
$smarty = 新しい Smarty;
// 呼び出されたテンプレートでは、{$name} を使用して name の値を出力できます。ここでの {} は賢い区切り文字です
$smarty->assign('name','zhang');
//PHP ステートメント ブロックは呼び出し元のテンプレート tpl ファイルでは実行できません
$smarty->display('templates/index.tpl');


/*
Index.tpl ページのコンテンツ


こんにちは、{$name}



*/

/*
Smartyをコンパイルする際の処理プロセスは、ソースphpファイル→テンプレートファイル(複数回呼び出される場合もあります)→ソースphpファイルとなります。 。 。
つまり、元のphpファイルの他の処理や出力には影響しません。そのため、Smarty テンプレート ファイルは、完全な HTML またはその一部にすることができます。

スマートな処理
Smarty は、まず PHP ソース ファイルを中間ファイル (PHP) にコンパイルします。キャッシュが有効な場合は、コンパイルされたファイルに基づいてキャッシュ ファイル (PHP も) を生成します。キャッシュする必要がある部分はすべてハードコーディングされます。
後続の各アクセスはコンパイル済みファイルにアクセスし (コンパイル済みファイルがすでに存在する場合)、キャッシュが有効であり、キャッシュ ファイルが存在せず、有効期限が切れると、キャッシュ ファイルに直接アクセスされ、コンパイルされたファイルはスキップされます。
コンパイル済みファイルが生成されると、テンプレート ファイルまたは設定ファイルが変更されない限り、自動的に更新されません。ソース PHP ファイルを変更しても再コンパイルはトリガーされません。コンパイルされたファイルが再生成されたら、キャッシュ ファイルも再生成する必要があります。
*/

//Smarty では 2 つの特別なコンパイル設定が可能です:
//1. いつでも自動再コンパイルは行われません (オンライン段階): このファイルにコンパイルされたファイルがない場合にのみ生成され、テンプレート ファイルまたは構成ファイルへの変更によって再コンパイルがトリガーされません。
$smarty->setCompile_check(false);//デフォルトは true で、false は、コンパイル済みファイルが存在しない場合を除き、ファイルが変更されたときにコンパイル済みファイルが生成されないことを意味します。
$smarty->getCompile_check();//現在のコンパイルチェック設定を取得します
//2. いつでも再コンパイル (デバッグ段階): いつでも再コンパイルします。
$smarty->setForce_compile(true);//デフォルトは false で、true は毎回再コンパイルすることを意味します (キャッシュが有効になっている場合は、毎回再キャッシュします)
$smarty->getForce_compile();//現在の強制コンパイル設定を取得します

//キャッシュを有効にする
$smarty->setCaching(true);
$smarty->getCaching();// 現在のキャッシュのステータスを取得します。デフォルトは false で閉じる
$smarty->setcache_lifetime(60);//キャッシュ時間を秒単位で設定します
//{*テンプレート ファイル*}
//{キャッシュなし}
//{$name}
//{/キャッシュなし}
//{*キャッシュが有効な場合、nocache タグに配置された変数はキャッシュされず、PHP ソース ファイルの値が毎回読み取られます*}


/*
スマートな区切り文字
テンプレート ファイルでは、通常の HTML コードと Smarty コードを区別するために区切り文字が使用されます。デフォルトは {} ですが、js および css と競合する可能性があります。変更も可能です。
3.0 では、テンプレート タグはスペースをサポートしません。たとえば、Smarty2 では { $abc } は認識されますが、これは JavaScript と CSS をより適切にサポートするためのものです。
*/
$smarty->left_delimiter = "{"; //左区切り文字、2.0 属性、3.0 でも使用されます
; $smarty->right_delimiter = "}";
/*
デリミタはPHPのechoに相当します。代入などの操作を行わない限りデリミタ内の値が出力されます
Smarty tplファイルの区切り文字の**で囲まれた内容が
などのコメント内容になります。 tpl ファイル:
{*これはテンプレートのコメント内容です*}
*/


// キャッシュ ディレクトリ パスを設定します。デフォルトの「キャッシュ」は設定しないでください
$smarty->setCacheDir("キャッシュ");
//キャッシュディレクトリのパスを取得します
$smarty->getCacheDir();

//設定ディレクトリのパスを設定します。デフォルトの「configs」はありません
$smarty->setConfigDir("configs");
//設定ディレクトリのパスを追加します。ファイルを呼び出すと、すべてのパスが検索されます。 $smarty->addConfigDir("configs/test");
//設定ディレクトリのパスの配列を取得します
$smarty->getConfigDir();

//プラグインのディレクトリパスを設定します。デフォルトの「プラグイン」はありません

$smarty->setPluginsDir("プラグイン");
//プラグインのディレクトリパスを追加します。ファイルを呼び出すと、すべてのパスが検索され、フォアグラウンドまたは呼び出すことができる関数のファイル名が含まれます。背景は異なるルールに従っており、関数名の命名には異なる呼び出しルールに従って異なる記述要件があります
$smarty->addPluginsDir("plugins/test");
//プラグインのディレクトリパスの配列を取得します
$smarty->getPluginsDir();

//テンプレートのディレクトリパスを設定します。デフォルトの「テンプレート」はありません

$smarty->setTemplateDir("テンプレート");
// テンプレートのディレクトリパスを追加します。ファイルを呼び出すと、すべてのパスが検索されます。 $smarty->addTemplateDir("テンプレート/テスト");
//テンプレートディレクトリパスの配列を取得します
$smarty->getTemplateDir();

//コンパイルディレクトリのパスを設定します。デフォルトの「templates_c」は設定しないでください
$smarty->setCompileDir("templates_c");
//コンパイルディレクトリのパスを取得します
$smarty->getCompileDir();
/*
さまざまな php ソース ファイル フォルダーを作成し、書き込まれた php ファイルを特定のカテゴリに従ってさまざまなフォルダーに配置できます。
次に、各フォルダーにカスタム構成ファイルを作成し、構成ファイル内に新しい $smarty = new Smarty オブジェクトを作成します
次に、異なるフォルダー内のすべての php ファイルのキャッシュ、構成ファイル、プラグイン、テンプレート、コンパイル ディレクトリを同じキャッシュ、構成ファイル、プラグイン、テンプレート、コンパイル ディレクトリに設定します
このフォルダー内のすべての PHP ソース ファイルがこの構成ファイルを参照して、同じ構成を取得します
*/


//テンプレート変数
$arr = array(array("zhang","li"),'a'=>array("liu","wang"),array("ming","yi"));
$smarty->assign("testArr", $arr);
// テンプレート変数を設定して、次に呼び出されるテンプレートの変数を指定します。{$testArr}、{$testArr['a'][0]}、または {$testArr.a. 0} : 特定の配列要素にアクセスします
// テンプレートでは、渡されたテンプレート変数の値を {$testArr = "testValue"scope="global"} を通じて直接変更できます (存在しない場合は、テンプレート内にテンプレート変数を作成して設定します)。 scope属性はアノテーションなのでテンプレート変数の使用範囲を記述する必要はありません
//テンプレート内の他の配列を変更または作成します {$testArr = [1,2,3]} または {$testArr = [1,'a'=>2,2=>3]} または { $testArr[ ] = 4} または PHP で配列を作成する他の同様の方法 //php ソース ファイルは、$smarty->getTemplateVars("testArr") を通じて指定されたテンプレート変数を取得できます。テンプレート内で変更または作成されたテンプレート変数を取得したい場合は、作成または変更時にscope属性を追加する必要があります。テンプレート内の値をscope="global"またはscope="parent"に設定します。
クラスA{

関数 aa($nam){

エコー $nam;
}
}
$smarty->assign("obj", new A);
//設定したテンプレート変数がオブジェクトの場合、テンプレートページ上で以下のように呼び出すことができます テンプレートにクラスオブジェクトを渡す際にアドレスも渡します
//{$obj->aa('私の名前は y')}

//Smarty は、変数に数字、文字、アンダースコアのみが含まれている限り、二重引用符で囲まれたテンプレート変数を認識できます。ただし、文字列に直接変換できるテンプレート変数のみがサポートされているようです

$smarty->assign("testStr", "これは testStr");

// テンプレートには {"$testStr OK!"} を通じてアクセスできます

/*

tpl テンプレートにはテンプレートが含まれています
テンプレートファイル: {include file="header.tpl"}
header.tpl の内容:
これがトップコンテンツです、ようこそ、{$name}

テンプレートにはテンプレートが含まれており、この形式にすることもできます

{include file="header.tpl" testVar="これがトップコンテンツです!!!"}

header.tpl は、{$testVar} を使用して、呼び出しページがインクルードされるときに渡されるテンプレート変数を使用できます
header.tpl の内容:
{$testVar}、ようこそ、{$name}



*/

/*

変数と値の一連の対応関係を事前に指定して設定ファイルに置き、使用時に読み込むことができます。

構成ファイルはデフォルトで configs フォルダーに配置され、フォルダー名はカスタマイズできます。
*/

/*

#テンプレート test.conf ファイル:

#キーに対応する値は引用符で囲むことができます
title = Smarty へようこそ!!
カットオフサイズ = 40

[中国]

言語 = 中国語


[イギリス]

言語 = 英語

#[china]、[england] はタグです。unset タグのキー値はグローバルであり、設定ファイルが呼び出される限りテンプレートで使用できます。設定ファイルの呼び出し時に対応するタグを指定して使用可能です
#PHP ソース ファイルで構成ファイル ステートメント $smarty->configLoad('test.conf', $sections = 'england') を呼び出します。このステートメントで呼び出されたテンプレートのみが構成ファイルを使用し、どのテンプレートを使用するかを指定します。 $sections 属性のタグの下のキーと値を介して使用します
#$sections パラメータは省略できます。デフォルト値は null です。$smarty->configLoad('test.conf') はグローバル キー値のみを使用し、ラベルの下のキー値は使用できません
#テンプレートの下の {config_load file="test.conf" section="china"scope="global"} ステートメントを通じて構成ファイルを呼び出します
#section 属性は記述する必要はありません。デフォルトは null です。scope 属性は {config_load file="test.conf"scope="global"} と記述する必要があります
#section 属性には 3 つの値を割り当てることができます
#local 現在のテンプレートのみがこの設定ファイルを使用できます
#parent 現在のテンプレートが設定ファイルステートメントを導入した後に含まれるテンプレート、または php ソースファイル内の Smarty オブジェクトが設定ファイルを呼び出した後に呼び出されるテンプレートのみが、設定ファイル内のキー値を使用できます
#global テスト効果は親と同じです
#{# language#} を通じてテンプレート内のキー値を使用します。また、{$smarty.config. language} を通じて構成ファイルのキー値にアクセスすることもできます
#PHP ソース ファイルでは、$smarty->getConfigVars(' language') または $smarty->getConfigVariable(' language') を使用してキー値を取得することもできます。配列です
*/


/*
tplファイルでよく使用される関数
tpl ファイル:


{キャプチャ名="testCapture"}
{include file="f1.tpl"}
{/キャプチャ}

{本当の場合}
{$smarty.capture.testCapture}
{/if}

{if $name == "王"}

王さん、ようこそ

{elseif $name == "張"}

張さん、ようこそ

{その他}

どんな方でもようこそ

{/if}
{*演算子は ==、>= など、または eq、ne などにすることができます。*}

{$x=0; $x {/for}
{*for ループ、PHP コードに似ています*}

{$x=0}
{while $x {$x++}
{/ながら}
{*while ループ。これも PHP コードに似ています。 *}


{foreach name="testForeach" from=$testArr key=arId item=arVal}
{$arId} の対応する値は次のとおりです: {$arVal}


{$smarty.foreach.testForeach.index} を返します

{$smarty.foreach.testForeach.iteration}

{$smarty.foreach.testForeach.first}

{$smarty.foreach.testForeach.last}

{$smarty.foreach.testForeach.total}



{foreachelse}
$testArr が null です
{/foreach}

{*次の 2 つの PHP に似た形式も使用できます*}

{foreach $testArr as $n}
{$n}
{/foreach}

{foreach $testArr as $key=>$n}

{$key}
{/foreach}

{$sectionArr = [0=>"a",4=>"b","c","d","e",6,7,8,9,10,11,12,13, 14,15,16]}

{セクション名="testSection" ループ=$sectionArr start=0 step=4 max=6 show=true}

{$smarty.section.testSection.index}-

{$sectionArr[testSection]}-
{$smarty.section.testSection.iteration}-


{他のセクション}

$sectionArr が null です
{/セクション}

の実行に直接ジャンプします

*/

/*
tpl テンプレート ファイル:
{リテラル}

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/1006115.html技術記事 PHP テンプレート エンジン Smarty を詳しく紹介します。テンプレート Smarty を詳しく紹介します。 php /* 1. Smarty とは、PHP で書かれたテンプレート 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)

Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Dec 24, 2024 pm 04:42 PM

PHP 8.4 では、いくつかの新機能、セキュリティの改善、パフォーマンスの改善が行われ、かなりの量の機能の非推奨と削除が行われています。 このガイドでは、Ubuntu、Debian、またはその派生版に PHP 8.4 をインストールする方法、または PHP 8.4 にアップグレードする方法について説明します。

PHP 開発用に Visual Studio Code (VS Code) をセットアップする方法 PHP 開発用に Visual Studio Code (VS Code) をセットアップする方法 Dec 20, 2024 am 11:31 AM

Visual Studio Code (VS Code とも呼ばれる) は、すべての主要なオペレーティング システムで利用できる無料のソース コード エディター (統合開発環境 (IDE)) です。 多くのプログラミング言語の拡張機能の大規模なコレクションを備えた VS Code は、

今まで知らなかったことを後悔している 7 つの PHP 関数 今まで知らなかったことを後悔している 7 つの PHP 関数 Nov 13, 2024 am 09:42 AM

あなたが経験豊富な PHP 開発者であれば、すでにそこにいて、すでにそれを行っていると感じているかもしれません。あなたは、運用を達成するために、かなりの数のアプリケーションを開発し、数百万行のコードをデバッグし、大量のスクリプトを微調整してきました。

PHPでHTML/XMLを解析および処理するにはどうすればよいですか? PHPでHTML/XMLを解析および処理するにはどうすればよいですか? Feb 07, 2025 am 11:57 AM

このチュートリアルでは、PHPを使用してXMLドキュメントを効率的に処理する方法を示しています。 XML(拡張可能なマークアップ言語)は、人間の読みやすさとマシン解析の両方に合わせて設計された多用途のテキストベースのマークアップ言語です。一般的にデータストレージに使用されます

JSON Web Tokens(JWT)とPHP APIでのユースケースを説明してください。 JSON Web Tokens(JWT)とPHP APIでのユースケースを説明してください。 Apr 05, 2025 am 12:04 AM

JWTは、JSONに基づくオープン標準であり、主にアイデンティティ認証と情報交換のために、当事者間で情報を安全に送信するために使用されます。 1。JWTは、ヘッダー、ペイロード、署名の3つの部分で構成されています。 2。JWTの実用的な原則には、JWTの生成、JWTの検証、ペイロードの解析という3つのステップが含まれます。 3. PHPでの認証にJWTを使用する場合、JWTを生成および検証でき、ユーザーの役割と許可情報を高度な使用に含めることができます。 4.一般的なエラーには、署名検証障害、トークンの有効期限、およびペイロードが大きくなります。デバッグスキルには、デバッグツールの使用とロギングが含まれます。 5.パフォーマンスの最適化とベストプラクティスには、適切な署名アルゴリズムの使用、有効期間を合理的に設定することが含まれます。

母音を文字列にカウントするPHPプログラム 母音を文字列にカウントするPHPプログラム Feb 07, 2025 pm 12:12 PM

文字列は、文字、数字、シンボルを含む一連の文字です。このチュートリアルでは、さまざまな方法を使用してPHPの特定の文字列内の母音の数を計算する方法を学びます。英語の母音は、a、e、i、o、u、そしてそれらは大文字または小文字である可能性があります。 母音とは何ですか? 母音は、特定の発音を表すアルファベットのある文字です。大文字と小文字など、英語には5つの母音があります。 a、e、i、o、u 例1 入力:string = "tutorialspoint" 出力:6 説明する 文字列「TutorialSpoint」の母音は、u、o、i、a、o、iです。合計で6元があります

PHPでの後期静的結合を説明します(静的::)。 PHPでの後期静的結合を説明します(静的::)。 Apr 03, 2025 am 12:04 AM

静的結合(静的::) PHPで後期静的結合(LSB)を実装し、クラスを定義するのではなく、静的コンテキストで呼び出しクラスを参照できるようにします。 1)解析プロセスは実行時に実行されます。2)継承関係のコールクラスを検索します。3)パフォーマンスオーバーヘッドをもたらす可能性があります。

PHPマジックメソッド(__construct、__destruct、__call、__get、__setなど)とは何ですか? PHPマジックメソッド(__construct、__destruct、__call、__get、__setなど)とは何ですか? Apr 03, 2025 am 12:03 AM

PHPの魔法の方法は何ですか? PHPの魔法の方法には次のものが含まれます。1。\ _ \ _コンストラクト、オブジェクトの初期化に使用されます。 2。\ _ \ _リソースのクリーンアップに使用される破壊。 3。\ _ \ _呼び出し、存在しないメソッド呼び出しを処理します。 4。\ _ \ _ get、dynamic属性アクセスを実装します。 5。\ _ \ _セット、動的属性設定を実装します。これらの方法は、特定の状況で自動的に呼び出され、コードの柔軟性と効率を向上させます。

See all articles