Funkcja Latte

Oprócz zwykłych funkcji PHP, w szablonach możemy używać także następujących innych funkcji.

clamp ogranicza wartość do podanego zakresu
divisibleBy sprawdza, czy zmienna jest podzielna przez liczbę
even sprawdza, czy podana liczba jest parzysta
first zwraca pierwszy element tablicy lub znak łańcucha
hasBlock wykrywa istnienie bloku
last zwraca ostatni element tablicy lub znak łańcucha
odd sprawdza, czy podana liczba jest nieparzysta
slice wyciąga część tablicy lubłańcucha

Korzystanie z

Funkcje są używane w taki sam sposób jak regularne funkcje PHP i mogą być używane we wszystkich wyrażeniach:

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

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

Funkcje niestandardowe można zarejestrować w następujący sposób:

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

W szablonie jest on wtedy nazywany w następujący sposób:

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

Funkcja

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

Ogranicza wartość do danego zakresu włączenia min i max.

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

Patrz również zacisk filtra.

divisibleBy(int $value, int $by)bool

Sprawdza, czy zmienna jest podzielna przez liczbę.

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

even(int $value): bool

Sprawdza, czy podana liczba jest parzysta.

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

first(string|array $value)mixed

Zwraca pierwszy element tablicy lub znak łańcucha:

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

Zobacz także last, filter first.

hasBlock(string $name): bool

Sprawdza, czy blok o podanej nazwie istnieje:

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

Zobacz także sprawdzanie istnienia bloku.

last(string|array $value)mixed

Zwraca ostatni element tablicy lub znak łańcucha:

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

Zobacz także first, filter last.

odd(int $value): bool

Sprawdza, czy podana liczba jest nieparzysta.

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

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

Wyodrębnia część tablicy lub łańcucha.

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

Filtr działa jak funkcja PHP array_slice dla tablic lub mb_substr dla łańcuchów z awaryjnym przejściem do funkcji iconv_substr w trybie UTF-8.

Jeśli start jest dodatni, to sekwencja rozpoczyna się z przesunięciem o ten numer od początku tablicy/łańcucha. Jeśli jest ujemny, to sekwencja zaczyna się z przesunięciem o tyle samo od końca.

Jeśli parametr długość jest podany i jest dodatni, to sekwencja będzie zawierała tyle elementów. Jeśli do funkcji zostanie przekazany ujemny parametr długości, sekwencja będzie zawierała wszystkie elementy oryginalnej tablicy, zaczynając od pozycji startowej i kończąc na pozycji mniejszej niż długość elementów od końca tablicy. Jeśli parametr ten nie zostanie przekazany, sekwencja będzie zawierała wszystkie elementy oryginalnej tablicy począwszy od pozycji startowej.

Domyślnie filtr zmienia kolejność i resetuje klucz całkowity tablicy. To zachowanie można zmienić ustawiając preserveKeys na true. Klucze łańcuchowe są zawsze zachowywane, niezależnie od tego parametru.

wersja: 3.0