fenom/docs/ru/start.md

111 lines
4.9 KiB
Markdown
Raw Normal View History

Быстрый старт
=============
2014-08-01 12:12:19 +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).
Что бы установить Fenom через composer пропишите в `composer.json` списке пакетов:
2014-08-01 12:12:19 +04:00
```json
{
"require": {
"fenom/fenom": "2.*"
}
}
```
и обновите зависимости: `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`. Рекомендуется использовать последнюю версию.
Для загрузки классов 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
Fenom::registerAutoload(PROJECT_DIR."/classes");
2014-08-01 12:12:19 +04:00
```
## Настройка Fenom
2014-08-01 12:12:19 +04:00
Есть два варианта инициировать объект шаблонизатора: через `new` оператор и фабрику.
Пример создания Fenom через фабрику:
2014-08-01 12:12:19 +04:00
```php
$fenom = Fenom::factory('/path/to/templates', '/path/to/compiled/template', $options);
```
Пример создания Fenom через оператор `new`:
2014-08-01 12:12:19 +04:00
```php
2016-03-15 15:11:13 +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);
```
* `/path/to/templates` — директория в которой хранятся шаблоны.
* `/path/to/template/cache` — директория в которую Fenom будет сохранять PHP-кеш шаблонов
* `$options` - битовая маска или массив [параметров](./configuration.md).
### Использование
2014-08-01 12:12:19 +04:00
Что бы отобразить шаблон на экран используйте метод `display`:
2014-08-01 12:12:19 +04:00
```php
// $fenom->display(string $template, array $variables) : void
2014-08-01 12:12:19 +04:00
$fenom->display("template/name.tpl", $vars);
```
Метод найдет шаблон `template/name.tpl` отрисует его в `stdout`, подставляя переменные из массива `$vars`.
Метод `fetch` возвращает вывод шаблона вместо его отображения на экран.
2014-08-01 12:12:19 +04:00
```php
// $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-01 12:12:19 +04:00
```php
// $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,
$callback = [new SplFileObject("compress.zlib:///tmp/sitemap.xml.gz", "w"), "fwrite"], // поток с архивацией в файл /tmp/sitemap.xml.gz
1e6 // размер куска данных в байтах
2014-08-01 12:12:19 +04:00
);
```
Поток позволяет обрабатывать большой результат по кускам, размер куска указывается в байтах аргументом `$chunk_size`.
Каждый кусок передается в `$callback` для обработки или вывода.
<!--
## Пример простого приложения
```
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);
```
-->