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-23 12:08:32 +04:00
|
|
|
|
Fenom зарегистрирован на [packagist.org](https://packagist.org/) как пакет [fenom/fenom](https://packagist.org/packages/fenom/fenom).
|
2014-08-05 17:49:42 +04:00
|
|
|
|
Что бы установить 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
|
|
|
|
|
2014-08-23 12:08:32 +04:00
|
|
|
|
### Произвольная подгрузка
|
2014-08-01 12:12:19 +04:00
|
|
|
|
|
2014-08-23 12:08:32 +04:00
|
|
|
|
Клонируйте Fenom в любую директорию Вашего проекта: `git clone https://github.com/bzick/fenom.git`. Рекомендуется использовать последнюю версию.
|
2014-08-05 17:49:42 +04:00
|
|
|
|
Для загрузки классов Fenom использует [psr-0](https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-0.md#autoloading-standard) стандарт.
|
|
|
|
|
Таким образом вы можете:
|
2014-08-23 12:08:32 +04:00
|
|
|
|
* использовать Ваш автозагрузчик, который понимает `psr-0` формат для загрузки классов Fenom из директории `src/` с пространством имен `Fenom`.
|
|
|
|
|
* или использовать встроенный автозагрузчик Fenom: `Fenom::registerAutoload();` для загрузки самого себя.
|
2014-08-01 12:12:19 +04:00
|
|
|
|
|
2014-08-23 12:08:32 +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
|
2015-11-04 11:14:46 +03:00
|
|
|
|
$fenom = new Fenom(new Fenom/Provider('/path/to/templates'));
|
2014-08-01 12:12:19 +04:00
|
|
|
|
$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-23 12:08:32 +04:00
|
|
|
|
Для вывода большого количества данных можно использовать поток
|
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` для обработки или вывода.
|
2014-08-23 14:09:18 +04:00
|
|
|
|
|
|
|
|
|
<!--
|
|
|
|
|
## Пример простого приложения
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
App/ (ROOT_DIR)
|
|
|
|
|
┠─ configs/ (файлы конфигурации приложения)
|
|
|
|
|
┠─ src/ (классы приложения)
|
|
|
|
|
┠─ templates/ (шаблоны приложения)
|
|
|
|
|
┠─ public/ (DOCUMENT_ROOT)
|
|
|
|
|
┃ ┠─ static/ (папка со статикой)
|
|
|
|
|
┃ ┖─ index.php (скрипт обработки всех динамических запросов)
|
|
|
|
|
┠─ tmp/ (папка доступная для записи web-серверу для хранения временных файлов)
|
|
|
|
|
┃ ┖─ compiled/ (кеша шаблонов)
|
|
|
|
|
┠─ vendor/ (строронние бибилиотеки)
|
|
|
|
|
┖─ composer.json (описание зависимостей для composer)
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
`index.php`:
|
|
|
|
|
```php
|
|
|
|
|
define('ROOT_DIR', dirname(__DIR__));
|
|
|
|
|
|
|
|
|
|
$fenom = Fenom::factory(ROOT_DIR.'/templates', ROOT_DIR.'/cache', Fenom::FORCE_VERIFY | Fenom::AUTO_RELOAD);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
-->
|