2011年9月8日木曜日

PHPテンプレートエンジンTwig 番外編:基礎構文サンプル

こんにちは、Yuzuruです。
NakajinさんがTwigについて書かれていたので今回はおまけとして簡単な例を幾つか上げてみようと思います。
変数についてはPHPテンプレートエンジンTwig その2を参照

if
class User {
    public 'age' => string '10'
    public 'name' => string 'Ronaldinho'
    public 'sex' => string 'male'
}
$object = new User();
echo $template->render(array('user' => $object));
[twig]
{% if user.age < 20 and not user.sex == 'female' %}
     こんにちは、{{user.name}}くん
{% else %}
    こんにちは、{{user.name}}さん
{% endif %}

[表示]
こんにちは、Ronaldinhoくん

論理演算子はand, or, not です(&&とかと違うので注意)


for

i=0からi=10まで繰り返す処理

[twig]

{% for i in 0..10 %}
    * {{ i }}
{% endfor %}

[表示]
* 0 * 1 * 2 * 3 * 4 * 5 * 6 * 7 * 8 * 9 * 10

foreach的な繰り返し処理もfor

class User {
    public $id;
    public $name;
}
$object1 = new User();
$object2 = new User();

$object1->id = 1;
$object1->name = 'Carlos';
$object2->id = 2;
$object2->name = 'Sofia';
$objects = array();
$objects[0] = $object1;
$objects[1] = $object2;echo $template->render(array('users' => $objects));

[twig]
{% for user in users %}
    {{user.id}}:{{user.name}}
{% else %}
     ユーザはいません
{% endfor %}

[表示]
1:Carlos 2:Sofia
nullやemptyの時はelseに入ります。

文字列連結
~を使います。
[twig]
{% set name = 'Santiago' %}
{{ "Hello " ~ name ~ "!" }}

[表示]
Hello Santiago!

format
書式フォーマットの指定
[twig]
{% set hoge = 0.21311 %}
    1:{{ hoge }}
    2:{{ "%2.2f"|format(hoge) }}

[表示]
1:0.21311
2:0.21

[twig]
{% set name = 'Santiago' %}
{{ "Hello %s!"|format(name) }}

[表示]
Hello Santiago!

printfの書式指定と同様です。

date
日付の表示形式
[twig]
{% set created = '2011-09-07 11:22:33' %}
①{{ created }}
②{{ created|date("H:i") }}
③{{ created|date("m/d") }}

[表示]
①2011-09-0711:22:33
②11:22
③09/07

0 件のコメント:

コメントを投稿