拡張メソッド

一、バックエンド Personエンティティコード(C#)

public class Person
{
    private string name;
    public string Name
    {
        get { return name; }
        set { name = value; }
    }
    private int age;
    public int Age
    {
        get { return age; }
        set { age = value; }
    }

    //引数なしコンストラクタ
    public Person(){}
    //引数付きコンストラクタ
    public Person(string name, int age)
    {
        this.name = name;
        this.age = age;
    }

    //引数なしインスタンスメソッド
    public string getMyName()
    {
        return this.name;
    }

    //複数引数を持つインスタンスメソッド
    public string JoinStr(string str1, string str2)
    {
        return str1 + str2;
    }
}Code language: C# (cs)

C#バックエンドコードでオブジェクト変数を設定

Person pTest = new Person("Tom", 22);
context.Put("pTest", pTest);Code language: JavaScript (javascript)

二、VTLテンプレートコード & レンダリング解説

メソッド呼び出し<br />
$pTest.getMyName();

#set($a = "hello")
#set($b = "foxdevelop")

$pTest.JoinStr($a, $b);Code language: PHP (php)
1. $pTest.getMyName()
  • オブジェクトの引数なしメソッド getMyName()を呼び出す
  • 戻り値:Tom

✅ Velocity 引数なしメソッド呼び出し:丸括弧()は省略可、$pTest.getMyName$pTest.getMyName()と同等

2. $pTest.JoinStr($a, $b)
  • 文字列引数を2つ受け取るメソッドを実行
  • VTLが先に$a$bを解釈し、実引数"hello""foxdevelop"を渡す
  • 連結結果を返却:hellofoxdevelop

まとめ

  1. メソッド名は大文字小文字を区別
    C# getMyName()GetMyName()、テンプレートはコードの記述と完全に一致させる必要があります。
  2. 引数には変数をそのまま記述
    クォートは不要、$pTest.JoinStr($a,$b)が正しい。$pTest.JoinStr("$a","$b")と書かないでください(文字列”$a”が渡されてしまいます)
  3. プロパティとメソッドの違い
  • $pTest.Name → プロパティアクセス(getter)
  • $pTest.getMyName() → メソッド呼び出し
  1. 戻り値は自動出力される
    テンプレート上で$オブジェクト.メソッド()と記述するとVelocityが戻り値を自動出力。出力不要な場合は#setで結果を受け取ります:
#set($result = $pTest.JoinStr($a,$b))Code language: PHP (php)

三、最終ページ出力結果

メソッド呼び出し
Tom;

hellofoxdevelop;

拡張メソッド

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です