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