mirror of
https://github.com/fenom-template/fenom.git
synced 2023-08-10 21:13:07 +03:00
Docs
This commit is contained in:
parent
c238053e99
commit
e0a3cc3a0d
@ -1,8 +1,6 @@
|
||||
Расширение Fenom
|
||||
================
|
||||
|
||||
*TODO*
|
||||
|
||||
# Добавление тегов
|
||||
|
||||
В шаблонизаторе принято различать два типа тегов: _компиляторы_ и _функции_.
|
||||
@ -121,7 +119,21 @@ $fenom->addTest($name, $code);
|
||||
?>
|
||||
```
|
||||
|
||||
# Расширение глобальной переменной
|
||||
# Расширение глобальной переменной или функции
|
||||
|
||||
Fenom обладает определенным набором глобальных переменных и функций. Однако их может не хватать для удобной работы с шаблонами.
|
||||
В этом случае потребуется добавить, переопределить или удалить существующие глобальные переменные или функции.
|
||||
Метод `Fenom::addAccessor($name, $parser)` позволяет добавить свой обработчик на не известную глобальную переменную или функцию.
|
||||
|
||||
```php
|
||||
$fenom->addAccessor('project', function (Fenom\Tokenizer $tokens) { /* code */ });
|
||||
```
|
||||
|
||||
Указанный вторым аргументом, парсер будет вызван при встречи компилятором конструкции `{$.project}`.
|
||||
Парсеры вызываются только на момент сборки шаблона, а не во время его выполенения.
|
||||
|
||||
Через метод `Fenom::addAccessor($name, $parser)` можно переопределить уже любую другую существующую глобальную переменную или функцию.
|
||||
Метод `Fenom::removeAccessor($name)` позволяет удалить любую определенную глобальную переменную или функцию по ее имени.
|
||||
|
||||
# Источники шаблонов
|
||||
|
||||
|
@ -20,7 +20,7 @@
|
||||
|
||||
### Теги
|
||||
|
||||
[Использование](./syntax.md#tags) тегов.
|
||||
[Использование](./syntax.md#Теги) тегов.
|
||||
|
||||
* [set](./tags/set.md), `add` и `var` — определение значения переменной
|
||||
* [if](./tags/if.md), `elseif` и `else` — условный оператор
|
||||
@ -36,7 +36,7 @@
|
||||
* [autoescape](./tags/autoescape.md) — экранирует фрагмент шаблона
|
||||
* [raw](./tags/raw.md) — отключает экранирование фрагмента шаблона
|
||||
* [unset](./tags/unset.md) — удаляет переменные
|
||||
* или [добавте](./ext/extend.md#add-tags) свои
|
||||
* или [добавте](./ext/extend.md#Добавление-тегов) свои
|
||||
|
||||
|
||||
***
|
||||
@ -64,7 +64,7 @@
|
||||
* [join](./mods/join.md) — объединяет массив в строку
|
||||
* так же разрешены функции: `json_encode`, `json_decode`, `count`, `is_string`, `is_array`, `is_numeric`, `is_int`, `is_object`,
|
||||
`strtotime`, `gettype`, `is_double`, `ip2long`, `long2ip`, `strip_tags`, `nl2br`
|
||||
* или [добавте](./ext/extend.md#add-modifiers) свои
|
||||
* или [добавте](./ext/extend.md#Добавление-модификаторов) свои
|
||||
|
||||
***
|
||||
|
||||
|
@ -102,7 +102,11 @@
|
||||
если такой констатнты нет будет взята константа `Storage\FS\DIR_SEPARATOR`.
|
||||
* `$.php` обращение к статическомому методу. `$.php.Storage.FS::put($filename, $data)` обращение к методу `Storage\FS::put($filename, $data)`.
|
||||
`$.php.Storage.FS.put($filename, $data)` `Storage\FS\put($filename, $data)`
|
||||
* `$.fetch($name, $values)`
|
||||
* Системная функция `$.fetch($name, $values)` реализует метод Fenom::fetch() в шаблоне. `$name` — имя шаблона,
|
||||
`$values` — дополнительные переменные, которые будут добавлены к существующим.
|
||||
Функция позволяет получить резуьтат работы шаблона в переменную.
|
||||
* так же вы можете [добавить](./ext/extend.md#Расширение-глобальной-переменной-или-функции) свои системные переменные и функции
|
||||
|
||||
|
||||
## Скалярные значения
|
||||
|
||||
@ -120,7 +124,6 @@
|
||||
| `\r` | возврат каретки (CR или 0x0D (13) в ASCII)
|
||||
| `\t` | горизонтальная табуляция (HT или 0x09 (9) в ASCII)
|
||||
| `\v` | вертикальная табуляция (VT или 0x0B (11) в ASCII)
|
||||
<!--| `\e` | escape-знак (ESC или 0x1B (27) в ASCII) (с версии PHP 5.4.0) -->
|
||||
| `\f` | подача страницы (FF или 0x0C (12) в ASCII)
|
||||
| `\\` | обратная косая черта
|
||||
| `\$` | знак доллара
|
||||
@ -300,6 +303,37 @@ NULL - это отсутствие присутствия, а FALSE - прису
|
||||
Однако такой способ применять не рекомендуется, так как если переменная `$arr` уже содержит некоторое значение (например, строку),
|
||||
то это значение останется на месте и `[]` может на самом деле означать доступ к символу в строке. Лучше инициализировать переменную путем явного присваивания значения.
|
||||
|
||||
## Константы
|
||||
|
||||
Константы - это идентификаторы (имена) простых значений, определенные в PHP.
|
||||
Исходя из их названия, нетрудно понять, что их значение не может изменяться в ходе выполнения шаблона.
|
||||
Имена констант чувствительны к регистру. По принятому соглашению, имена констант всегда пишутся в верхнем регистре.
|
||||
Константы доступны из любого шаблона через глобальную переменную {$.const.*}: `{$.const.PHP_EOL}`.
|
||||
В шаблоне определить константу нельзя.
|
||||
|
||||
## PHP функции и методы
|
||||
|
||||
Fenom предоставляет возможноть обращаться к функиям и методам самого PHP. Использование их в шаблонах не рекомендуется.
|
||||
Используя системную переменную `$.php` можно вызвать любую функцию или метод в шаблоне:
|
||||
|
||||
```smarty
|
||||
{$.php.some_function($a, $b, $c)}
|
||||
```
|
||||
метод вызывается иначе
|
||||
|
||||
```smarty
|
||||
{$.php.MyClass::method($a, $b, $c)}
|
||||
```
|
||||
|
||||
пространство имен указывается перед функций или классом, разделяя точкой вместо обратного слеша:
|
||||
|
||||
```smarty
|
||||
{$.php.My.NS.some_function($a, $b, $c)}
|
||||
{$.php.My.NS.MyClass::method($a, $b, $c)}
|
||||
```
|
||||
|
||||
Вызов функции и методов можно выключить настройкой `???` или ограничить.
|
||||
|
||||
## Модификаторы
|
||||
|
||||
Модификаторы переменных могут быть прмменены к переменным, пользовательским функциям или строкам.
|
||||
@ -333,10 +367,6 @@ NULL - это отсутствие присутствия, а FALSE - прису
|
||||
* Компиляторы. В отличии от функций компиляторы вызываются во время компиляции шаблона и возвращают PHP код, который описывает некоторое действие.
|
||||
Компиляторы и формируют основные конструкции типа `if`, `foreach` и т.д.
|
||||
|
||||
```
|
||||
{set $a = $.func.mailto($email)}
|
||||
```
|
||||
|
||||
### Игнорирование кода
|
||||
|
||||
В шаблонизаторе Fenom используются фигурные скобки для отделения HTML от кода Fenom.
|
||||
|
@ -18,6 +18,12 @@
|
||||
Все значения присвоенных переменных восстанавливаются после того, как подключаемый шаблон отработал.
|
||||
Это значит, что вы можете использовать все переменные из подключающего шаблона в подключаемом, но изменения переменных внутри подключаемого шаблона не будут видны внутри подключающего шаблона после команды {include}.
|
||||
|
||||
Если требуется сохранить результат отрисовки шаблона в переменную то используйте `$.fetch($templates, $values)`:
|
||||
|
||||
```smarty
|
||||
{set $data = $.fetch('user.tpl', ["name" => $data.name, "email" => $data.email])}
|
||||
```
|
||||
|
||||
### {insert}
|
||||
|
||||
В отличии от `{include}` тег `{insert}` не вызывает дочерний шаблон во время отрисовки, в ставляет код дочернего шаблона в родительский на момент компиляции.
|
||||
|
Loading…
Reference in New Issue
Block a user