mirror of
https://github.com/fenom-template/fenom.git
synced 2023-08-10 21:13:07 +03:00
commit
d596c81b4c
@ -1,5 +1,7 @@
|
||||
language: php
|
||||
|
||||
sudo: false
|
||||
|
||||
php:
|
||||
- 5.3
|
||||
- 5.4
|
||||
|
@ -28,7 +28,7 @@
|
||||
|
||||
* [set](./tags/set.md), `add` и `var` — определение значения переменной
|
||||
* [if](./tags/if.md), `elseif` и `else` — условный оператор
|
||||
* [foreach](./tags/foreach.md), `foreaelse`, `break` and `continue` — перебор элементов массива или объекта
|
||||
* [foreach](./tags/foreach.md), `foreachelse`, `break` and `continue` — перебор элементов массива или объекта
|
||||
* [for](./tags/for.md), `forelse`, `break` and `continue` — цикл
|
||||
* [switch](./tags/switch.md), `case` — групповой условный оператор
|
||||
* [cycle](./tags/cycle.md) — циклицеский перебор массива значений
|
||||
|
@ -2,12 +2,12 @@
|
||||
=========
|
||||
|
||||
По синтаксису шаблона Fenom похож на [Smarty](http://www.smarty.net/), но обладает рядом улучшений.
|
||||
Все теги шаблонизатора заключаются в фигрные скобки: `{` — открытие тега и `}` — закрытие тега.
|
||||
Все теги шаблонизатора заключаются в фигурные скобки: `{` — открытие тега и `}` — закрытие тега.
|
||||
|
||||
**Замечание**
|
||||
Хоть Fenom и позаимствовал синтаксис Smarty, но он не заимствовал теги Smarty как есть.
|
||||
Однако некоторые теги очень похожи. Но не все так плохо, Fenom имеет набор [дополнений](https://github.com/bzick/fenom-extra)
|
||||
которые могут сделать Fenom более похожим на Smarty что бы переход был мягче.
|
||||
которые могут сделать Fenom более похожим на Smarty, чтобы переход был мягче.
|
||||
|
||||
## Переменные
|
||||
|
||||
@ -29,7 +29,7 @@
|
||||
<div class="user">Hello, <a href="/users/17">Bzick</a>.</div>
|
||||
```
|
||||
|
||||
Переменные могут быть массивом. В этом случае обращение по ключу происходит через опертор `.` или, как в PHP, через операторы `[` и `]`
|
||||
Переменные могут быть массивом. В этом случае обращение по ключу происходит через оператор `.` или, как в PHP, через операторы `[` и `]`
|
||||
```smarty
|
||||
<div class="user">Hello, <a href="/users/{$user.id}">{$user.name}</a>.</div>
|
||||
```
|
||||
@ -79,7 +79,7 @@
|
||||
|
||||
### Системная переменная
|
||||
|
||||
Безименная системная переменная начинается с `$.` и предоставляет доступ к глобальным системным переменным и системной информации:
|
||||
Безымянная системная переменная начинается с `$.` и предоставляет доступ к глобальным системным переменным и системной информации:
|
||||
|
||||
* `$.env` — массив `$_ENV`.
|
||||
* `$.get` — массив `$_GET`.
|
||||
@ -94,8 +94,8 @@
|
||||
* `$.tpl.basename` возвращает текущее название шаблона без схемы.
|
||||
* `$.tpl.scm` возвращает схему шаблона.
|
||||
* `$.tpl.options` возвращает параметры шбалона в виде целого числа.
|
||||
* `$.tpl.depends` возвращает массив шаблонов на которые ссылается текущий шаблон.
|
||||
* `$.tpl.time` возвращает штамп времени когда шаблон последний раз менялся
|
||||
* `$.tpl.depends` возвращает массив шаблонов, на которые ссылается текущий шаблон.
|
||||
* `$.tpl.time` возвращает штамп времени, когда шаблон последний раз менялся
|
||||
* `$.version` возвращает версию Fenom.
|
||||
* `$.const` обращение к PHP константе: `$.const.PHP_EOL` обращение к константе `PHP_EOL`. Поддерживается пространство имен
|
||||
которое разделяется через точку: `$.const.Storage.FS::DIR_SEPARATOR` обращение к PHP константе `Storage\FS::DIR_SEPARATOR`
|
||||
@ -223,7 +223,7 @@
|
||||
{var $c = 7E-10}
|
||||
```
|
||||
|
||||
### Булев
|
||||
### Булев тип
|
||||
|
||||
Это простейший тип. Булевое выражает истинность значения. Он может быть либо TRUE либо FALSE.
|
||||
Для указания булевого значения, используйте ключевое слово TRUE или FALSE. Оба регистро-независимы.
|
||||
@ -237,11 +237,11 @@
|
||||
Специальное значение NULL представляет собой переменную без значения. NULL - это единственно возможное значение типа null.
|
||||
|
||||
Обычно возникают путаницы между NULL и FALSE, так как по роли они похожи, но разлицаются по принципу:
|
||||
NULL - это отсутствие присутствия, а FALSE - присутвие отсутствия.
|
||||
NULL - это отсутствие присутствия, а FALSE - присутствие отсутствия.
|
||||
|
||||
### Операции
|
||||
|
||||
Как и любой другой язык программирования/шаблонизации Fenom поддерживает множество различных операторов:
|
||||
Как и любой другой язык программирования/шаблонизации, Fenom поддерживает множество различных операторов:
|
||||
|
||||
* Арифметические операторы — `+`, `-`, `*`, `/`, `%`
|
||||
* Логические операторы — `||`, `&&`, `!$var`, `and`, `or`, `xor`
|
||||
@ -321,7 +321,7 @@ Fenom предоставляет возможноть обращаться к ф
|
||||
```smarty
|
||||
{$.php.some_function($a, $b, $c)}
|
||||
```
|
||||
метод вызывается иначе
|
||||
Метод вызывается иначе
|
||||
|
||||
```smarty
|
||||
{$.php.MyClass::method($a, $b, $c)}
|
||||
@ -362,7 +362,7 @@ Fenom предоставляет возможноть обращаться к ф
|
||||
* заполнитель (placeholder) — вывод переменной в шаблоне, например `{$name}`
|
||||
* тег — конструкция, выполняющаяя некоторые действия, которая выглядит как именованный заполнитель (placeholder), например `{include $name}`
|
||||
|
||||
Теги так же можно разделить на две группы:
|
||||
Теги также можно разделить на две группы:
|
||||
|
||||
* Функии. Тег функции вызывает пользовательскую во время выполнения шаблона, результат функции будет выведен вместо тега.
|
||||
Пользовательские функции являются дополнительными и могут быть индивидуальными. Они могут быть изменены по вашему желанию, также вы можете создать новые.
|
||||
|
@ -117,6 +117,11 @@ class Fenom
|
||||
*/
|
||||
protected $_compile_dir = "/tmp";
|
||||
|
||||
/**
|
||||
* @var string compile prefix ID template
|
||||
*/
|
||||
protected $_compile_id;
|
||||
|
||||
/**
|
||||
* @var string[] compile directory for custom provider
|
||||
*/
|
||||
@ -430,6 +435,18 @@ class Fenom
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set compile prefix ID template
|
||||
*
|
||||
* @param string $id prefix ID to store compiled templates
|
||||
* @return Fenom
|
||||
*/
|
||||
public function setCompileId($id)
|
||||
{
|
||||
$this->_compile_id = $id;
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param callable $cb
|
||||
@ -1022,10 +1039,10 @@ class Fenom
|
||||
foreach ($tpl as &$t) {
|
||||
$t = str_replace(":", "_", basename($t));
|
||||
}
|
||||
return implode("~", $tpl) . "." . sprintf("%x.%x.php", crc32($hash), strlen($hash));
|
||||
return $this->_compile_id . implode("~", $tpl) . "." . sprintf("%x.%x.php", crc32($hash), strlen($hash));
|
||||
} else {
|
||||
$hash = $tpl . ":" . $options;
|
||||
return sprintf("%s.%x.%x.php", str_replace(":", "_", basename($tpl)), crc32($hash), strlen($hash));
|
||||
return sprintf($this->_compile_id . "%s.%x.%x.php", str_replace(":", "_", basename($tpl)), crc32($hash), strlen($hash));
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -988,10 +988,10 @@ class Template extends Render
|
||||
$parser = $this->getStorage()->getAccessor($accessor);
|
||||
$is_var = false;
|
||||
if($parser) {
|
||||
if(is_string($parser)) {
|
||||
return call_user_func_array($parser, array($tokens->next(), $this, &$is_var));
|
||||
} else {
|
||||
if(is_array($parser)) {
|
||||
return call_user_func_array($parser['parser'], array($parser['accessor'], $tokens->next(), $this, &$is_var));
|
||||
} else {
|
||||
return call_user_func_array($parser, array($tokens->next(), $this, &$is_var));
|
||||
}
|
||||
} else {
|
||||
throw new \RuntimeException("Unknown accessor '$accessor'");
|
||||
|
Loading…
Reference in New Issue
Block a user