Latte v2.9.0 Release Notes

Release Date: 2020-11-16 // over 3 years ago
  • ๐Ÿ†• New Features

    • possibility to {include block from file}
    • filter |sort, |clamp & custom function clamp()
    • โž• added {ifchanged}
    • โž• added {skipIf}
    • โž• added {foreach} {else} {/foreach}
    • โž• added {try} & {else} & {rollback}
    • โž• added {embed file.latte}
    • โž• added local blocks {block local name} & {define local name}
    • {case 1, 2, 3} accepts more than one option
    • syntax {include block foo} and {include file foo}
    • syntax {ifset block foo}
    • syntax {ifset #$blockName}
    • โž• added $iterator->parent, returns the iterator surrounding the current one
    • โž• added $iterator->counter0, returns 0-indexed counter
    • ๐Ÿ‘ implemented support for named arguments
    • โž• added null-coalescing-safe operator ??->

    ๐Ÿ‘Œ Improvements & Fixes

    • template code: direct HTML changed to 'echo' statements
    • ๐Ÿ›  BlockMacros: fixed variables visibility between blocks depend on block order [Closes #178]
    • FilterExecutor::filterContent() converts HtmlStringable to text [Closes #215]
    • ๐Ÿ‘ Compiler: supports uppercases AND|OR|XOR [Closes #172]
    • ๐Ÿ”จ BlockMacros: big refactoring
    • ๐Ÿšš Template & BlockMacros: used new class Block, removed $blockQueue & $blockTypes
    • ๐Ÿšš Template: removed old accumulator $_b (deprecated in 2.4, BC break)
    • โž• added Defaults: default filters list moved here from FilterExecutor
    • CoreMacros: replaced global queuened temporary variables with local ones
    • BlockMacros: snippet driver wrapped in try ... finally
    • Parser: fixed parsing {__()} [Closes #226]
    • checks for valid macro/filter/function/block names
    • macros validates arguments, modifiers, position (MacroNode::validate())
    • {debugbreak} uses only xdebug
    • ๐Ÿ”„ changed word 'macro' --> 'tag' in exception messages
    • CachingIterator: do not ask when not in valid state (#230)
    • ๐Ÿ‘Œ improved typehints
    • PhpHelpers::reformatCode() appends correctly semicolon after '${""}'

    ๐Ÿ”„ Changes

    • ๐Ÿ—„ Colons as argument separators in modifiers are deprecated (BC break)
    • optional chaining: operator ?-> in Latte behaves the same as in PHP (BC break)
    • ๐Ÿ—„ optional chaining: deprecated support for $var? and $obj?::$prop to be consistent with PHP 8 (BC break)
    • internal variables are prefixed $__ and disallowed to be used
    • Template: changed $contentType and $blocks to constants CONTENT_TYPE & BLOCKS
    • ๐Ÿšš Template & BlockMacros: moved snippets to own layer, removed '_' prefix