2014-08-05 17:49:42 +04:00
|
|
|
|
Быстрый старт
|
|
|
|
|
=============
|
2014-08-01 12:12:19 +04:00
|
|
|
|
|
2014-08-05 17:49:42 +04:00
|
|
|
|
## Установка Fenom
|
2014-08-01 12:12:19 +04:00
|
|
|
|
|
|
|
|
|
### Composer
|
|
|
|
|
|
2014-08-05 17:49:42 +04:00
|
|
|
|
Fenom зарегестирован на [packagist.org](https://packagist.org/) как пакет [fenom/fenom](https://packagist.org/packages/fenom/fenom).
|
|
|
|
|
Что бы установить Fenom через composer пропишите в `composer.json` списке пакетов:
|
2014-08-01 12:12:19 +04:00
|
|
|
|
```json
|
|
|
|
|
{
|
|
|
|
|
"require": {
|
|
|
|
|
"fenom/fenom": "2.*"
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
```
|
2014-08-05 17:49:42 +04:00
|
|
|
|
и обновите зависимости: `composer update`.
|
2014-08-01 12:12:19 +04:00
|
|
|
|
|
|
|
|
|
### Custom loader
|
|
|
|
|
|
2014-08-05 17:49:42 +04:00
|
|
|
|
Склонируйте Fenom в любую директорию Вашего проекта: `git clone https://github.com/bzick/fenom.git`. Рекомендуется использовать последнюю версию.
|
|
|
|
|
Для загрузки классов Fenom использует [psr-0](https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-0.md#autoloading-standard) стандарт.
|
|
|
|
|
Таким образом вы можете:
|
|
|
|
|
* использовать Ваш загрузчик, который понимает `psr-0` формат для загрузки классов Fenom из директории `src/` с пространством имен `Fenom`.
|
|
|
|
|
* или использовать строенный загрузчик Fenom: `Fenom::registerAutoload();` для загрузки самого себя.
|
2014-08-01 12:12:19 +04:00
|
|
|
|
|
2014-08-05 17:49:42 +04:00
|
|
|
|
Так же вы можете использовать встроенный в Fenom загрузчик для загрузки других классов в `psr-0` формате наименования класса и файла:
|
2014-08-01 12:12:19 +04:00
|
|
|
|
```php
|
2014-08-05 17:49:42 +04:00
|
|
|
|
Fenom::registerAutoload(PROJECT_DIR."/classes");
|
2014-08-01 12:12:19 +04:00
|
|
|
|
```
|
|
|
|
|
|
2014-08-05 17:49:42 +04:00
|
|
|
|
## Настройка Fenom
|
2014-08-01 12:12:19 +04:00
|
|
|
|
|
2014-08-05 17:49:42 +04:00
|
|
|
|
Есть два варианта инициировать объект шаблонизатора: через `new` оператор и фабрику.
|
|
|
|
|
Пример создания Fenom через фабрику:
|
2014-08-01 12:12:19 +04:00
|
|
|
|
```php
|
|
|
|
|
$fenom = Fenom::factory('/path/to/templates', '/path/to/compiled/template', $options);
|
|
|
|
|
```
|
2014-08-05 17:49:42 +04:00
|
|
|
|
Пример создания Fenom через оператор `new`:
|
2014-08-01 12:12:19 +04:00
|
|
|
|
```php
|
|
|
|
|
$fenom = new Fenom(new Provider('/path/to/templates'));
|
|
|
|
|
$fenom->setCompileDir('/path/to/template/cache');
|
|
|
|
|
$fenom->setOptions($options);
|
|
|
|
|
```
|
|
|
|
|
|
2014-08-05 17:49:42 +04:00
|
|
|
|
* `/path/to/templates` — директория в которой хранятся шаблоны.
|
|
|
|
|
* `/path/to/template/cache` — директория в которую Fenom будет сохранять PHP-кеш шаблонов
|
|
|
|
|
* `$options` - битовая маска или массив [параметров](./configuration.md).
|
|
|
|
|
|
|
|
|
|
### Использование
|
2014-08-01 12:12:19 +04:00
|
|
|
|
|
2014-08-05 17:49:42 +04:00
|
|
|
|
Что бы отобразить шаблон на экран используйте метод `display`:
|
2014-08-01 12:12:19 +04:00
|
|
|
|
|
|
|
|
|
```php
|
2014-08-05 17:49:42 +04:00
|
|
|
|
// $fenom->display(string $template, array $variables) : void
|
|
|
|
|
|
2014-08-01 12:12:19 +04:00
|
|
|
|
$fenom->display("template/name.tpl", $vars);
|
|
|
|
|
```
|
|
|
|
|
|
2014-08-05 17:49:42 +04:00
|
|
|
|
Метод найдет шаблон `template/name.tpl` отрисует его в `stdout`, подставляя переменные из массива `$vars`.
|
|
|
|
|
|
|
|
|
|
Метод `fetch` возвращает вывод шаблона вместо его отображения на экран.
|
2014-08-01 12:12:19 +04:00
|
|
|
|
```php
|
2014-08-05 17:49:42 +04:00
|
|
|
|
// $fenom->fetch(string $template, array $variables) : string
|
|
|
|
|
|
2014-08-01 12:12:19 +04:00
|
|
|
|
$result = $fenom->fetch("template/name.tpl", $vars);
|
|
|
|
|
```
|
|
|
|
|
|
2014-08-05 17:49:42 +04:00
|
|
|
|
Для отрисовки большого количества данных можно использовать поток
|
|
|
|
|
|
2014-08-01 12:12:19 +04:00
|
|
|
|
```php
|
2014-08-05 17:49:42 +04:00
|
|
|
|
// $fenom->pipe(string $template, array $variables, callable $callback, int $chunk_size) : void
|
|
|
|
|
|
2014-08-01 12:12:19 +04:00
|
|
|
|
$fenom->pipe(
|
|
|
|
|
"template/sitemap.tpl",
|
|
|
|
|
$vars,
|
2014-08-05 17:49:42 +04:00
|
|
|
|
$callback = [new SplFileObject("compress.zlib:///tmp/sitemap.xml.gz", "w"), "fwrite"], // поток с архивацией в файл /tmp/sitemap.xml.gz
|
|
|
|
|
1e6 // размер куска данных в байтах
|
2014-08-01 12:12:19 +04:00
|
|
|
|
);
|
|
|
|
|
```
|
2014-08-05 17:49:42 +04:00
|
|
|
|
|
|
|
|
|
Поток позволяет обрабатывать большой результат по кускам, размер куска указывается в байтах аргументом `$chunk_size`.
|
|
|
|
|
Каждый кусок передается в `$callback` для обработки или вывода.
|
|
|
|
|
|