Składnia
Syntax Latte powstał z praktycznych wymagań projektantów stron internetowych. Szukaliśmy najbardziej przyjaznej dla użytkownika składni, z którą można elegancko napisać konstrukcje, które w przeciwnym razie są prawdziwym wyzwaniem. Jednocześnie wszystkie wyrażenia są napisane dokładnie tak samo jak w PHP, więc nie musisz uczyć się nowego języka. Po prostu wykorzystujesz w pełni to, co już wiesz.
Poniżej znajduje się minimalny szablon, który ilustruje kilka podstawowych elementów: tagi, n:attributes, komentarze i filtry.
Przyjrzyjmy się bliżej tym ważnym elementom i temu, jak mogą one pomóc w stworzeniu rewelacyjnego szablonu.
Tagi
Szablon zawiera znaczniki, które kontrolują logikę szablonu (na przykład pętle foreach) lub wyrażenia wyjściowe.
Pojedynczy delimiter jest używany dla obu { ... }
, więc nie trzeba się zastanawiać, którego delimitera użyć w
danej sytuacji, jak to ma miejsce w innych systemach. Jeśli po znaku {
następuje cytat lub spacja, Latte nie uważa
go za początek znacznika, więc możesz bez problemu używać konstrukcji JavaScript, JSON lub reguł CSS w szablonach.
Zobacz przegląd wszystkich tagów. Dodatkowo można też tworzyć własne tagi.
Latte rozumie PHP
Możesz używać wyrażeń PHP wewnątrz znaczników, które dobrze znasz:
- zmienne
- ciągi (w tym HEREDOC i NOWDOC), tablice, liczby itp.
- operatorzy
- wywołania funkcji i metod (które mogą być sandboxowane)
- mecz
- anonimowe funkcje
- callbacks
- komentarze wieloliniowe
/* ... */
- itp…
Latte dodaje również kilka miłych rozszerzeń do składni PHP.
n:atrybuty
Wszystkie sparowane znaczniki, na przykład {if} … {/if}
, działające na pojedynczym elemencie HTML, można
przepisać jako n:attributes. Na przykład {foreach}
w przykładzie otwierającym można by napisać w ten
sposób:
Następnie funkcjonalność jest stosowana do elementu HTML, w którym jest umieszczona:
wydruki:
Używając przedrostka inner-
możemy zmodyfikować zachowanie, aby dotyczyło tylko wewnętrznej części
elementu:
Zostanie wydrukowany:
Możesz też użyć przedrostka tag-
, aby zastosować tę funkcjonalność do samych znaczników HTML:
Która wychodzi w zależności od zmiennej $url
:
Jednak n:attributes nie jest tylko skrótem dla znaczników parami. Istnieją również czyste n:atrybuty, takie jak n:href lub podręczny pomocnik kodera n:class.
Filtry
Zobacz przegląd standardowych filtrów.
Filtry wpisujemy po pionowym pasku (przed nim może być spacja):
Filtry mogą być konkatenowane, a następnie stosowane w kolejności od lewej do prawej:
Parametry wprowadzane są po nazwie filtra, oddzielone dwukropkami lub przecinkami:
Filtry można również zastosować do wyrażenia:
Do zablokowania:
Lub bezpośrednio na wartość (w połączeniu z tagiem {=expr}
):
Dynamiczne znaczniki HTML
Latte obsługuje dynamiczne znaczniki HTML, które są przydatne, gdy potrzebujesz elastyczności w nazwach znaczników:
Na przykład, powyższy kod może wygenerować <h1>Heading</h1>
lub
<h2>Heading</h2>
w zależności od wartości zmiennej $level
. Dynamiczne znaczniki HTML w
Latte muszą być zawsze sparowane. Ich alternatywą jest n:tag.
Ponieważ Latte jest bezpiecznym systemem szablonów, sprawdza, czy wynikowa nazwa tagu jest prawidłowa i nie zawiera niepożądanych lub złośliwych wartości. Zapewnia również, że końcowa nazwa tagu jest zawsze taka sama jak nazwa tagu otwierającego.
Uwagi
Komentarze są napisane w ten sposób i nie dostają się do wyjścia:
Komentarze PHP działają wewnątrz znaczników:
Cukier syntaktyczny
Nienotowane ciągi znaków
Możesz pominąć cudzysłowy dla prostych ciągów znaków:
Proste ciągi znaków to takie, które składają się wyłącznie z liter, cyfr, podkreśleń, myślników i kropek. Nie
mogą zaczynać się od cyfry i nie mogą zaczynać się ani kończyć myślnikiem. Nie może składać się tylko z wielkich
liter i podkreślników, bo wtedy jest traktowany jako stała (np. PHP_VERSION
). I nie może być sprzeczny
z następującymi słowami kluczowymi: and
, array
, clone
, default
,
false
, in
, instanceof
, new
, null
, or
,
return
, true
, xor
.
Skrócony operator trójskładnikowy
Jeśli trzecia wartość operatora trójdzielnego jest pusta, można ją pominąć:
Nowoczesna notacja klucza tablicowego
Klucze tablicowe mogą być zapisywane podobnie jak nazwane parametry podczas wywoływania funkcji:
Filtry
Filtry można stosować do dowolnych wyrażeń, wystarczy całość zamknąć w nawiasach:
Operator in
Operator in
może być użyty do zastąpienia funkcji in_array()
Porównanie jest zawsze
ścisłe:
Okno historyczne
Latte w ciągu swojej historii wymyśliło kilka syntaktycznych sugar daddies, które kilka lat później pojawiły się w
samym PHP. Na przykład w Latte można było napisać pola typu [1, 2, 3]
zamiast array(1, 2, 3)
lub
używać operatora nullsafe $obj?->foo
na długo przed tym, jak było to możliwe w samym PHP. Latte wprowadził
również operator rozszerzenia tablicy (expand) $arr
, który jest odpowiednikiem dzisiejszego operatora
...$arr
z PHP.
Operator undefined-safe ??->
, który jest podobny do operatora nullsafe ?->
, ale nie powoduje
błędu, jeśli zmienna nie istnieje, został stworzony z powodów historycznych i obecnie zalecamy używanie standardowego
operatora PHP ?->
.
Ograniczenia PHP w Latte
W Latte można pisać tylko wyrażenia PHP. Oznacza to, że nie można używać wyrażeń kończących się średnikiem. Nie
można deklarować klas ani używać struktur
kontrolnych, takich jak if
, foreach
, switch
, return
, try
,
throw
i innych, zamiast których Latte oferuje swoje znaczniki. Nie można również używać
atrybutów, backticków ani żadnych magicznych stałych. Nie można nawet używać
unset
, echo
, include
, require
, exit
, eval
, ponieważ
nie są one funkcjami, ale specjalnymi konstrukcjami języka PHP, a zatem nie są wyrażeniami. Obsługiwane są tylko komentarze
wielowierszowe /* ... */
.
Można jednak obejść te ograniczenia aktywując RawPhpExtension, które pozwala
wtedy na użycie dowolnego kodu PHP w tagu {php ...}
na ryzyko autora szablonu.