以前Smartyの記事を書きましたがPHPのテンプレートエンジンとして他によく使うものとしてTwigがあります。
プロジェクトでSymfonyを使っていることもあり、「変数」に関して頻繁に調べるものに関してこちらにまとめてみました。
Twigで変数を定義する方法
Twigのテンプレート内で変数を定義するにはsetを使用します。
基本
css
{% set foo = 'bar' %}css
{# displays bar #}
{{ foo }}複数まとめて定義する
css
{% set foo, bar = 'test', 'text' %}
{# display testtext #}
{{ foo }}{{ bar}}Twigで配列を定義する方法
基本
css
{% set foo = [10, 20] %}
{# display 10 #}
{{ foo.0 }}
{{ foo[0] }}Keyを命名して配列を定義
css
{# keys as string #}
{% set bar = {'a': 'test','b': 'text'} %}
{# display text #}
{{ bar.b }}
{# keys as names#}
{% set bar = {a: 'test',b: 'text'} %}変数を組み合わせて定義する
変数をsetで定義する際に、値やKeyに変数を使用することもできます。
javascript
{# set foo variable #}
{% set foo = 'a' %}
{# value as variable #}
{% set test = foo %}
{# display a #}
{{ test }}
{# keys as expressions #}
{% set bar = { (foo): 'foo', (1 + 1): 'bar', (foo ~ 'b'): 'baz' } %}
{# display foo bar baz #}
{{ bar.a }}
{{ bar.2 }}
{{ bar.ab }}上記例からわかる通り、変数やKEYに式を使用することも可能です。変数と変数をくっつけたりできるので便利です。
Setの使い方サンプル
変数と変数を結合(文字列と変数など)
css
{% set foo = 'a' %}
{% set bar = 'b' %}
{% set test = foo ~ bar %}
{# display ab #}
{{ test }}
{% set baz = 'foo' ~ 'bar' %}
{# display foobar #}
{{ baz }}変数がfalseの場合のデフォルト値を設定する
css
{% set test = foo ?? 'default' %}
{# display default if foo is false #}
{{ test }}配列を別の配列に追加する(マージする)
PHP等ではおなじみですが、Twigテンプレート側でも可能です。
css
{% set values = [1, 2] %}
{% set values = values|merge(['apple', 'orange']) %}
{# values now contains [1, 2, 'apple', 'orange'] #}htmlのタグなど複数行を定義したい
css
{% set foo %}
<div>
test
</div>
{% endset %}作業を通じて便利だなと感じた使い方がでてきましたらまた追加していきたいと思います。
Twigおすすめの書籍
Twigだけに特化した書籍は読んだことがないのですが、AmazonのKindleにありました。
📦Amazon で関連書籍・ツールを検索
PHP テンプレート Twig
Amazonで探す →(アソシエイトリンク)
