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 @@
Hello, Bzick.
``` -Переменные могут быть массивом. В этом случае обращение по ключу происходит через опертор `.` или, как в PHP, через операторы `[` и `]` +Переменные могут быть массивом. В этом случае обращение по ключу происходит через оператор `.` или, как в PHP, через операторы `[` и `]` ```smarty
Hello, {$user.name}.
``` @@ -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'");