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
|
Расширение 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` — определение значения переменной
|
* [set](./tags/set.md), `add` и `var` — определение значения переменной
|
||||||
* [if](./tags/if.md), `elseif` и `else` — условный оператор
|
* [if](./tags/if.md), `elseif` и `else` — условный оператор
|
||||||
@ -36,7 +36,7 @@
|
|||||||
* [autoescape](./tags/autoescape.md) — экранирует фрагмент шаблона
|
* [autoescape](./tags/autoescape.md) — экранирует фрагмент шаблона
|
||||||
* [raw](./tags/raw.md) — отключает экранирование фрагмента шаблона
|
* [raw](./tags/raw.md) — отключает экранирование фрагмента шаблона
|
||||||
* [unset](./tags/unset.md) — удаляет переменные
|
* [unset](./tags/unset.md) — удаляет переменные
|
||||||
* или [добавте](./ext/extend.md#add-tags) свои
|
* или [добавте](./ext/extend.md#Добавление-тегов) свои
|
||||||
|
|
||||||
|
|
||||||
***
|
***
|
||||||
@ -64,7 +64,7 @@
|
|||||||
* [join](./mods/join.md) — объединяет массив в строку
|
* [join](./mods/join.md) — объединяет массив в строку
|
||||||
* так же разрешены функции: `json_encode`, `json_decode`, `count`, `is_string`, `is_array`, `is_numeric`, `is_int`, `is_object`,
|
* так же разрешены функции: `json_encode`, `json_decode`, `count`, `is_string`, `is_array`, `is_numeric`, `is_int`, `is_object`,
|
||||||
`strtotime`, `gettype`, `is_double`, `ip2long`, `long2ip`, `strip_tags`, `nl2br`
|
`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`.
|
если такой констатнты нет будет взята константа `Storage\FS\DIR_SEPARATOR`.
|
||||||
* `$.php` обращение к статическомому методу. `$.php.Storage.FS::put($filename, $data)` обращение к методу `Storage\FS::put($filename, $data)`.
|
* `$.php` обращение к статическомому методу. `$.php.Storage.FS::put($filename, $data)` обращение к методу `Storage\FS::put($filename, $data)`.
|
||||||
`$.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)
|
| `\r` | возврат каретки (CR или 0x0D (13) в ASCII)
|
||||||
| `\t` | горизонтальная табуляция (HT или 0x09 (9) в ASCII)
|
| `\t` | горизонтальная табуляция (HT или 0x09 (9) в ASCII)
|
||||||
| `\v` | вертикальная табуляция (VT или 0x0B (11) в ASCII)
|
| `\v` | вертикальная табуляция (VT или 0x0B (11) в ASCII)
|
||||||
<!--| `\e` | escape-знак (ESC или 0x1B (27) в ASCII) (с версии PHP 5.4.0) -->
|
|
||||||
| `\f` | подача страницы (FF или 0x0C (12) в ASCII)
|
| `\f` | подача страницы (FF или 0x0C (12) в ASCII)
|
||||||
| `\\` | обратная косая черта
|
| `\\` | обратная косая черта
|
||||||
| `\$` | знак доллара
|
| `\$` | знак доллара
|
||||||
@ -300,6 +303,37 @@ NULL - это отсутствие присутствия, а FALSE - прису
|
|||||||
Однако такой способ применять не рекомендуется, так как если переменная `$arr` уже содержит некоторое значение (например, строку),
|
Однако такой способ применять не рекомендуется, так как если переменная `$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 код, который описывает некоторое действие.
|
* Компиляторы. В отличии от функций компиляторы вызываются во время компиляции шаблона и возвращают PHP код, который описывает некоторое действие.
|
||||||
Компиляторы и формируют основные конструкции типа `if`, `foreach` и т.д.
|
Компиляторы и формируют основные конструкции типа `if`, `foreach` и т.д.
|
||||||
|
|
||||||
```
|
|
||||||
{set $a = $.func.mailto($email)}
|
|
||||||
```
|
|
||||||
|
|
||||||
### Игнорирование кода
|
### Игнорирование кода
|
||||||
|
|
||||||
В шаблонизаторе Fenom используются фигурные скобки для отделения HTML от кода Fenom.
|
В шаблонизаторе Fenom используются фигурные скобки для отделения HTML от кода Fenom.
|
||||||
|
@ -18,6 +18,12 @@
|
|||||||
Все значения присвоенных переменных восстанавливаются после того, как подключаемый шаблон отработал.
|
Все значения присвоенных переменных восстанавливаются после того, как подключаемый шаблон отработал.
|
||||||
Это значит, что вы можете использовать все переменные из подключающего шаблона в подключаемом, но изменения переменных внутри подключаемого шаблона не будут видны внутри подключающего шаблона после команды {include}.
|
Это значит, что вы можете использовать все переменные из подключающего шаблона в подключаемом, но изменения переменных внутри подключаемого шаблона не будут видны внутри подключающего шаблона после команды {include}.
|
||||||
|
|
||||||
|
Если требуется сохранить результат отрисовки шаблона в переменную то используйте `$.fetch($templates, $values)`:
|
||||||
|
|
||||||
|
```smarty
|
||||||
|
{set $data = $.fetch('user.tpl', ["name" => $data.name, "email" => $data.email])}
|
||||||
|
```
|
||||||
|
|
||||||
### {insert}
|
### {insert}
|
||||||
|
|
||||||
В отличии от `{include}` тег `{insert}` не вызывает дочерний шаблон во время отрисовки, в ставляет код дочернего шаблона в родительский на момент компиляции.
|
В отличии от `{include}` тег `{insert}` не вызывает дочерний шаблон во время отрисовки, в ставляет код дочернего шаблона в родительский на момент компиляции.
|
||||||
|
Loading…
Reference in New Issue
Block a user