Latte 関数
テンプレートでは、一般的な PHP 関数に加えて、次の関数も使えます。
clamp |
値を指定した範囲に収める |
divisibleBy |
変数がある数で割り切れるか調べる |
even |
指定した数が偶数か調べる |
first |
配列の最初の要素、または文字列の最初の文字を返す |
group |
さまざまな基準でデータをグループ化する |
hasBlock |
ブロックの存在を調べる |
hasTemplate |
テンプレートの存在を調べる |
last |
配列の最後の要素、または文字列の最後の文字を返す |
odd |
指定した数が奇数か調べる |
slice |
配列や文字列の一部を取り出す |
使い方
関数は一般的な PHP 関数と同じように使え、あらゆる式の中で利用できます。
<p>{clamp($num, 1, 100)}</p>
{if odd($num)} ... {/if}
カスタム関数は次のように登録できます。
$latte = new Latte\Engine;
$latte->addFunction('shortify', fn(string $s, int $len = 10) => mb_substr($s, 0, $len));
テンプレートでは次のように呼び出します。
<p>{shortify($text)}</p>
<p>{shortify($text, 100)}</p>
関数
clamp(int|float $value, int|float $min, int|float $max): int|float
値を min から max までの範囲(両端を含む)に収めます。
{=clamp($level, 0, 255)}
clamp フィルタも参照してください。
divisibleBy(int $value, int $by): bool
変数がある数で割り切れるかどうかを調べます。
{if divisibleBy($num, 5)} ... {/if}
even(int $value): bool
指定した数が偶数かどうかを調べます。
{if even($num)} ... {/if}
first(string|iterable $value): mixed
配列の最初の要素、または文字列の最初の文字を返します。
{=first([1, 2, 3, 4])} {* 1 を出力 *}
{=first('abcd')} {* 'a' を出力 *}
last()、first フィルタも参照してください。
group(iterable $data, string|int|\Closure $by): iterable
この関数はさまざまな基準でデータをグループ化します。
この例では、テーブルの行を categoryId
カラムでグループ化しています。出力はグループの反復可能な構造で、キーは categoryId
カラムの値です。詳しいガイドをご覧ください。
{foreach group($items, categoryId) as $categoryId => $categoryItems}
<ul>
{foreach $categoryItems as $item}
<li>{$item->name}</li>
{/foreach}
</ul>
{/foreach}
group フィルタも参照してください。
hasBlock(string $name): bool
指定した名前のブロックが存在するかどうかを調べます。
{if hasBlock(header)} ... {/if}
ブロックの存在チェックも参照してください。
hasTemplate(string $name): bool
指定した名前のテンプレートが存在するかどうかを判定します。
{if hasTemplate('foo.latte')} ... {/if}
last(string|array $value): mixed
配列の最後の要素、または文字列の最後の文字を返します。
{=last([1, 2, 3, 4])} {* 4 を出力 *}
{=last('abcd')} {* 'd' を出力 *}
odd(int $value): bool
指定した数が奇数かどうかを調べます。
{if odd($num)} ... {/if}
slice(string|iterable $value, int $start, ?int $length=null, bool $preserveKeys=false): string|array|\Generator
配列、文字列、イテレータの一部を取り出します。
{=slice('hello', 1, 2)} {* 'el' を出力 *}
{=slice(['a', 'b', 'c'], 1, 2)} {* ['b', 'c'] を出力 *}
この関数は、配列に対しては PHP の array_slice、文字列に対しては mb_substr
のように動き、UTF‑8 モードでは iconv_substr
関数にフォールバックします。入力が一般的なイテレータの場合は、切り出した要素を yield
するジェネレータに変換されます。
start
が非負なら、配列や文字列の先頭からそのオフセットの位置から始まります。start
が負なら、末尾からその分だけ手前から始まります。
length が指定されていて正なら、最大でその数の要素を含みます。入力が
length より短ければ、利用できる要素だけが含まれます。length
が指定されていて負なら、入力の末尾からその数だけ手前で終わります。省略した場合は、start
から入力の末尾までのすべてが含まれます。
既定では、この関数は整数の配列キーを並べ直してリセットします。この振る舞いは
preserveKeys を true
にすると変えられます。文字列のキーは、このパラメータに関係なく常に保持されます。