これまで学習した変数はC#のコードビハインド側で定義し、テンプレートから参照する方式でした。実はテンプレート内部でsetディレクティブを使って直接変数を定義できます。
1. 変数定義 #set()
変数定義は2通りあります:
方法1:バックエンドのC#/Javaコードで事前定義し、テンプレート側で読み込む;
方法2:テンプレート内で直接#set()を使い変数を定義(今回の講義のポイント)
#set($name = "hello foxdevelop.com")
#set($okay = "common baby")
#set($nameokay = "$name|$okay")Code language: PHP (php)
#set(変数 = 値):文字列、数値、配列、オブジェクトプロパティ、他変数からの代入に対応- 弱い型付け。型宣言は不要
2. 変数出力の記法とルール
2.1 基本書式
$name:変数が存在しない場合、$nameをそのまま出力$!name:サイレント出力。変数が無ければ空文字を出力。画面に$xxxが出るのを防ぐため推奨- 推奨記法:
${name}(波括弧で変数範囲を明確に)
2.2 境界に関する注意例
#set($name = "hello")
$namehello × $namehello という変数として解釈され見つからない
${name}hello √ $name を展開した後 hello を連結、正しく動作Code language: PHP (php)
3. 1行コメント ##
## ここはコメント。最終的な画面に出力されない
#set($name = "test") ## 行末にコメントを書くことも可能Code language: PHP (php)
- コメント内容はレンダリング結果に出力されません;
- ブラウザでページソースを表示してもコメントは見えません(テンプレートエンジン側で破棄される)。
4. #set で利用できる代入の種類
## 文字列代入
#set($name = "hello world")
## 変数を別変数へ代入
#set($obj= $name)
## オブジェクトプロパティへ代入
#set($obj.Friend = "monica")
#set($obj.Blame = $whitehouse.Leak)
## メソッド呼び出し戻り値を代入
#set($obj.Plan = $spindoctor.weave($web))
## 数値代入
#set($obj.Number = 123)
## 配列代入
#set($obj.Say = ["Not", $my, "fault"])Code language: PHP (php)
5. 変数が存在しない場合の特殊仕様
$sadfsdfsdCode language: PHP (php)
テンプレートエンジンが変数を解決できないとき:
- 通常記法
$sadfsdfsd:そのまま文字列$sadfsdfsdを出力 $!sadfsdfsdの場合:変数無しなら空文字を出力
テンプレート内で変数を設定する
Previous: 基本テンプレート構文
Next: テンプレート再利用