一、後端 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)
cs後端程式碼設定物件變數
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)
- 呼叫帶兩個字串參數的方法
- VTL 會先解析
$a、$b,傳入實際參數"hello"、"foxdevelop" - 回傳拼接結果:
hellofoxdevelop
總結
- 方法名稱大小寫必須完全相符
C#getMyName()≠GetMyName(),樣板寫法要和程式碼保持一致。 - 直接傳入變數
不需要額外加引號,$pTest.JoinStr($a,$b)寫法正確;不要寫成$pTest.JoinStr("$a","$b")(會傳入字串字面”$a”) - 屬性與方法的區別
$pTest.Name→ 存取屬性(getter)$pTest.getMyName()→ 呼叫方法
- 回傳值自動輸出
樣板內直接寫$物件.方法(),Velocity會自動輸出方法回傳值;不想輸出時使用#set接收結果:
#set($result = $pTest.JoinStr($a,$b))Code language: PHP (php)
三、頁面最終渲染結果
方法的呼叫
Tom;
hellofoxdevelop;
擴充方法