EZ Publish/EZ Publish 模板变量类型
EZ Publish | EZ Publish安装与卸载 | EZ Publish的使用 | EZ Publish常见问题 | EZ Publish其他 |
eZ Publish 模板语言支持以下变量类型:
• 数字
• 字符串
• 布尔
• 数组
• 对象
某些变量可以直接创建,其它的变量需要通过操作符创建。数字和字符串可以直接创建。布尔和数组需要通过操作符创建,对象需要通过各种函数和操作符创建。此外,也可以创建和使用自定义的变量。自定义变量必须以对象形式存在。
数字
数字可以是正数,0,负整数或浮点数。下例演示了如何在模板中使用不同的数字:
{13} {1986} {3.1415} {102.5} {-1024} {-273.16}
字符串
字符串可以由单引号或双引号,'或",封装。如果省略引号,字符串会被解释为函数名。字符串通常以下面的方法定义:
{'This is a string.'} {"This is another string."}
输出:
This is a string. This is another a string.
使用引号
字符串内部可以包含引号。可以通过使用不同类型的引号(例如:在双引号封装的字符串中使用单引号)或通过使用转义符"\":
{'The following text is double quoted: "Rock and roll!" '} {"The following text is single quoted: 'Rock and roll!' "} {'Using both single and double quotes: "Rock\'n roll!" '} {'Using both single and double quotes: \'Rock\'n roll!\' '} {"Using both single and double quotes: 'Rock'n roll!' "} {"Using both single and double quotes: \"Rock'n roll\" "}
输出:
The following text is double quoted: "Rock and roll!" The following text is single quoted: 'Rock and roll!' Using both single and double quotes: "Rock'n roll!" Using both single and double quotes: 'Rock'n roll!' Using both single and double quotes: 'Rock'n roll!' Using both single and double quotes: "Rock'n roll!"
因为模板代码的工作方式(用"{"和"}"定义代码块),右侧的大括号"}"也不要用转义符转义。下例演示了这个问题:
{'{ This text is inside curly brackets.\}'}
输出:
{This text is inside curly brackets.}
模板字符串不支持行内变量代入(这一点与Perl 和PHP 不同)。因此,不能在字符串中直接嵌入变量。但是,可以用"concat"操作符将变量内容追加到字符串。
布尔
布尔变量必须用"true"或"false"操作符来创建。例如:
{true()} {false()}
对于某些操作符和函数,可以用整数代替布尔型。但是,它们不是真正的布尔类型。0 表示FALSE;非0 表示TRUE。某些操作符可以把数组当作布尔值处理。空数组为FALSE,非空数组为TRUE。
数组
数组是保存不同类型变量的集合。数据可以是简单的向量或是哈希表(关联数组)。向量的元素可以用数组下标访问(下标从0 开始)。哈希表的元素可以通过键值访问。数组可以通过"array"操作符创建。哈希表可以通过"hash"操作符创建。下例演示了如何创建数据和哈希:
例1:数字数组 {array( 2, 4, 8, 16 )}
上例创建包含四个数字的数组。数组包含如下元素:
例2:字符串数组 {array( 'This', 'is', 'a', 'test' )}
上例创建了一个包含四个字符串的数组。数组包含以下元素:
例3:哈希表 {hash( 'Red', 16, 'Green', 24, 'Blue', 32 )}
上例创建了包含三对元素的哈希表。数组包含以下元素:
对象 模板对象由PHP 代码或模板操作符创建。系统用对象代表不同种类的数据结构。例如:对象被用来代表节点,翻译,网络商店订单,用户帐号,角色,策略等。
对象属性
对象由属性构成。每个属性有一个唯一的标识符。属性的类型不可不同。属性可以代表任何类型的数据(数字,字符串,数组等等)甚至其它对象。因为属性是有名字的(每个属性有唯一的标识符),可以通过不同的标识符访问它们的内容。这一点与哈希表的使用相同。
下图演示了一个对象("ezdate")的结构。
上图表明"ezdate"对象由五个属性("timestamp","is_valid","year","month","day")构成。"is_valid"是布尔型,其余属性为字符串型。"value"为属性的真是内容。
属性可用性
当从系统中提取一个对象时,有些属性被预提取/计算,而有些属性则没有。这意味着,访问某些属性将需要额外的处理(通常为额外的数据库查询)。