Latte fonksiyonları

Şablonlarda, alışılmış PHP fonksiyonlarının yanı sıra şu fonksiyonları da kullanabilirsiniz.

clamp bir değeri verilen aralığa sıkıştırır
divisibleBy bir değişkenin bir sayıya bölünebilir olup olmadığını denetler
even verilen sayının çift olup olmadığını denetler
first bir dizinin ilk öğesini veya bir dizenin ilk karakterini döndürür
group veriyi çeşitli ölçütlere göre gruplar
hasBlock bir bloğun var olup olmadığını saptar
hasTemplate bir şablonun var olup olmadığını saptar
last bir dizinin son öğesini veya bir dizenin son karakterini döndürür
odd verilen sayının tek olup olmadığını denetler
slice bir dizinin veya dizenin bir dilimini çıkarır

Kullanım

Fonksiyonlar, alışılmış PHP fonksiyonlarıyla aynı şekilde kullanılır ve tüm ifadelerde kullanılabilir:

<p>{clamp($num, 1, 100)}</p>

{if odd($num)} ... {/if}

Özel fonksiyonlar şöyle kaydedilebilir:

$latte = new Latte\Engine;
$latte->addFunction('shortify', fn(string $s, int $len = 10) => mb_substr($s, 0, $len));

Şablonda ise şöyle çağrılır:

<p>{shortify($text)}</p>
<p>{shortify($text, 100)}</p>

Fonksiyonlar

clamp (int|float $value, int|float $min, int|float $max): int|float

Bir değeri, min ve max ile verilen kapsayıcı aralığa sıkıştırır.

{=clamp($level, 0, 255)}

Ayrıca bkz. clamp filtresi.

divisibleBy (int $value, int $by)bool

Bir değişkenin bir sayıya bölünebilir olup olmadığını denetler.

{if divisibleBy($num, 5)} ... {/if}

even (int $value): bool

Verilen sayının çift olup olmadığını denetler.

{if even($num)} ... {/if}

first (string|iterable $value)mixed

Bir dizinin ilk öğesini veya bir dizenin ilk karakterini döndürür:

{=first([1, 2, 3, 4])}    {* 1 yazdırır *}
{=first('abcd')}          {* 'a' yazdırır *}

Ayrıca bkz. last(), first filtresi.

group (iterable $data, string|int|\Closure $by): iterable

Bu fonksiyon veriyi farklı ölçütlere göre gruplar.

Bu örnekte tablodaki satırlar categoryId sütununa göre gruplanır. Çıktı, anahtarı categoryId sütunundaki değer olan, yinelenebilir bir gruplar yapısıdır. Ayrıntılı kılavuzu okuyun.

{foreach group($items, categoryId) as $categoryId => $categoryItems}
    <ul>
        {foreach $categoryItems as $item}
            <li>{$item->name}</li>
        {/foreach}
    </ul>
{/foreach}

Ayrıca bkz. group filtresi.

hasBlock (string $name): bool

Belirtilen adda bir bloğun var olup olmadığını denetler:

{if hasBlock(header)} ... {/if}

Ayrıca bkz. blok varlığı denetimi.

hasTemplate (string $name)bool

Belirtilen adda bir şablonun var olup olmadığını belirler:

{if hasTemplate('foo.latte')} ... {/if}

last (string|array $value)mixed

Bir dizinin son öğesini veya bir dizenin son karakterini döndürür:

{=last([1, 2, 3, 4])}    {* 4 yazdırır *}
{=last('abcd')}          {* 'd' yazdırır *}

Ayrıca bkz. first(), last filtresi.

odd (int $value): bool

Verilen sayının tek olup olmadığını denetler.

{if odd($num)} ... {/if}

slice (string|iterable $value, int $start, ?int $length=null, bool $preserveKeys=false): string|array|\Generator

Bir dizinin, dizenin veya yineleyicinin bir dilimini çıkarır.

{=slice('hello', 1, 2)}           {* 'el' yazdırır *}
{=slice(['a', 'b', 'c'], 1, 2)}   {* ['b', 'c'] yazdırır *}

Fonksiyon, diziler için PHP'nin array_slice, dizeler için ise mb_substr fonksiyonu gibi çalışır; UTF‑8 modunda iconv_substr fonksiyonuna geri düşer. Girdi genel bir yineleyiciyse, dilimlenmiş öğeleri veren bir generator'a dönüştürülür.

start negatif değilse, dizi dizinin/dizenin başından itibaren o kaydırmadan başlar. start negatifse, dizi sondan o kadar uzaktan başlar.

length verilmişse ve pozitifse, dizide en fazla o kadar öğe olur. Girdi length'ten kısaysa yalnızca var olan öğeler bulunur. length verilmişse ve negatifse, dizi girdinin sonundan o kadar öğe önce durur. Atlanırsa, dizi start'tan girdinin sonuna kadar her şeyi içerir.

Fonksiyon varsayılan olarak tam sayı dizi anahtarlarını yeniden düzenler ve sıfırlar. Bu davranış, preserveKeys true yapılarak değiştirilebilir. Dize anahtarlar, bu parametreden bağımsız olarak her zaman korunur.

versiyon: 3.x