diff --git a/.travis.yml b/.travis.yml
index c98ca2d..1e808fa 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -1,5 +1,7 @@
language: php
+sudo: false
+
php:
- 5.3
- 5.4
diff --git a/docs/ru/readme.md b/docs/ru/readme.md
index ecd96a4..b7b743a 100644
--- a/docs/ru/readme.md
+++ b/docs/ru/readme.md
@@ -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) — циклицеский перебор массива значений
diff --git a/docs/ru/syntax.md b/docs/ru/syntax.md
index 5c1fdfc..c496fb1 100644
--- a/docs/ru/syntax.md
+++ b/docs/ru/syntax.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 @@
```
-Переменные могут быть массивом. В этом случае обращение по ключу происходит через опертор `.` или, как в PHP, через операторы `[` и `]`
+Переменные могут быть массивом. В этом случае обращение по ключу происходит через оператор `.` или, как в PHP, через операторы `[` и `]`
```smarty
```
@@ -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}`
-Теги так же можно разделить на две группы:
+Теги также можно разделить на две группы:
* Функии. Тег функции вызывает пользовательскую во время выполнения шаблона, результат функции будет выведен вместо тега.
Пользовательские функции являются дополнительными и могут быть индивидуальными. Они могут быть изменены по вашему желанию, также вы можете создать новые.
diff --git a/src/Fenom.php b/src/Fenom.php
index 3da176f..0ead78c 100644
--- a/src/Fenom.php
+++ b/src/Fenom.php
@@ -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));
}
}
diff --git a/src/Fenom/Template.php b/src/Fenom/Template.php
index ec25d37..750bd63 100644
--- a/src/Fenom/Template.php
+++ b/src/Fenom/Template.php
@@ -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'");