diff --git a/docs/ext/tags.md b/docs/ext/tags.md index 3ab24f6..0151b61 100644 --- a/docs/ext/tags.md +++ b/docs/ext/tags.md @@ -1,7 +1,7 @@ Tags [RU] ========= -В шаблонизаторе принято различать два типа тегов: компиляторы и функции. +В шаблонизаторе принято различать два типа тегов: _компиляторы_ и _функции_. Компиляторы вызываются во время преобразования кода шаблона в PHP код и возвращяю PHP код который будет вставлен вместо тега. А функции вызываются непременно в момент выполнения шаблона и возвращают непосредственно данные которые будут отображены. Среди тегов как и в HTML есть строчные и блоковые теги. @@ -14,15 +14,34 @@ Tags [RU] $fenom->addFunction(string $function_name, callable $callback[, callable $parser]); ``` -В данном случае запускается стандартный парсер, который автоматически разберет аргументы тега, которые должны быть в формате HTML аттрибутов и отдаст их в функцию ассоциативным массивом. -В данном случае вы можете переопределить парсер на произвольный в формате `function (Fenom\Tokenizer $tokenizer, Fenom\Template $template)` -Существует более совершенный способ добавления функции: +В данном случае запускается стандартный парсер, который автоматически разберет аргументы тега, которые должны быть в формате HTML аттрибутов и отдаст их в функцию ассоциативным массивом: +```php +$fenom->addFunction("some_function", function (array $params) { /* ... */ }); +``` +При необходимости можно переопределить парсер на произвольный: +```php +$fenom->addFunction("some_function", $some_function, function (Fenom\Tokenizer $tokenizer, Fenom\Template $template) { /* parse tag */}); +``` +Существует более простой способ добавления произвольной функции: ```php $fenom->addFunctionSmarty(string $function_name, callable $callback); ``` -В данном случае парсер просканирует список аргументов коллбека и попробует сопоставить с аргументами из тега. Таким образом вы успешно можете добавлять Ваши штатные функции. +В данном случае парсер сканирует список аргументов коллбека и попробует сопоставить с аргументами тега. + +```php +// ... class XYCalcs .. +public static function calc($x, $y = 5) { /* ... */} +// ... +$fenom->addFunctionSmart('calc', 'XYCalcs::calc'); +``` +then +```smarty +{calc x=$top y=50} or {calc y=50 x=$top} is XYCalcs::calc($top, 50) +{calc x=$top} or {calc $top} is XYCalcs::calc($top) +``` +Таким образом вы успешно можете добавлять Ваши функции или методы. ## Block function @@ -32,7 +51,10 @@ $fenom->addFunctionSmarty(string $function_name, callable $callback); $fenom->addBlockFunction(string $function_name, callable $callback[, callable $parser_open[, callable $parser_close]]); ``` -Сам коллбек принимает первым аргументом контент между открывающим и закрывающим тегом, а вторым аргументом - ассоциативный массив из аргуметов тега. +Сам коллбек принимает первым аргументом контент между открывающим и закрывающим тегом, а вторым аргументом - ассоциативный массив из аргуметов тега: +```php +$fenom->addBlockFunction('some_block_function', function ($content, array $params) { /* ... */}); +``` ## Inline compiler @@ -53,7 +75,7 @@ $fenom->addCompilerSmart(string $compiler, $storage); ## Block compiler -Добавление блочного компилятора осуществяется двум способами. Первый +Добавление блочного компилятора осуществяется двумя способами. Первый ```php $fenom->addBlockCompiler(string $compiler, array $parsers, array $tags); diff --git a/docs/settings.md b/docs/settings.md index d3cade1..76794b1 100644 --- a/docs/settings.md +++ b/docs/settings.md @@ -21,12 +21,16 @@ $fenom->setOptions($options); Параметры могут быть массивом `'option_name' => true` (если ключ не указан автоматически задаётся false) или битовой маской. * **disable_methods**, `Fenom::DENY_METHODS`, запретить вызов методов у объектов -* **disable_native_funcs**, `Fenom::DENY_INLINE_FUNCS`, запретить использование PHP функций, кроме разрешенных +* **disable_native_funcs**, `Fenom::DENY_INLINE_FUNCS`, запретить использование PHP функций, кроме разрешенных. * **auto_reload**, `Fenom::AUTO_RELOAD`, пересобирать шаблон если его оригинал был изменён (замедляет работу шаблонизатора). * **force_compile**, `Fenom::FORCE_COMPILE`, пересобирать шаблон при каждом вызове (сильно замедляет работу шаблонизатора). +* **disable_cache**, `Fenom::DISABLE_CACHE`, не сохранять собранный шаблон на диск (сильно замедляет работу шаблонизатора). * **force_include**, `Fenom::FORCE_INCLUDE`, оптимизировать вставку шаблона в шаблон. Это увеличит производительность и размер собранного шаблона. Опция активируется если имя шаблона задано явно и скалярно. * **auto_escape**, `Fenom::AUTO_ESCAPE`, все выводящие переменные и результаты функций будут экранироваться +* **auto_trim**, `Fenom::AUTO_TRIM`, при компиляции, все пробельные символы между тегами будут удлаены. +* **force_verify**, `Fenom::FORCE_VERIFY`, проверять обращение каждой переменной и возвращать NULL если переменной не существует. +* **deny_static_methods**, `Fenom::DENY_STATIC_METHODS`, отключает возможность вызова статичных методов в шаблоне. ```php $fenom->setOptions(array( @@ -38,3 +42,9 @@ $fenom->setOptions(Fenom::AUTO_RELOAD | Fenom::FORCE_INCLUDE); ``` По умолчанию, все опции отключены. + +### Tag options + +## :raw + +## :trim, :ltrim, :rtrim \ No newline at end of file diff --git a/docs/tags/autotrim.md b/docs/tags/autotrim.md new file mode 100644 index 0000000..d932277 --- /dev/null +++ b/docs/tags/autotrim.md @@ -0,0 +1,14 @@ +Tag {autotrim} +============== + +Force enable or disable `auto_trim` option for block area: + +```smarty +{autotrim true} + ... + Text: {$text} {* value of the variable $text will be escaped *} + ... +{/autotrim} +``` + +Also see :trim, :rtrim and :ltrim tag options \ No newline at end of file