fenom/docs/ru/start.md
2015-11-04 11:14:46 +03:00

4.9 KiB
Raw Permalink Blame History

Быстрый старт

Установка Fenom

Composer

Fenom зарегистрирован на packagist.org как пакет fenom/fenom. Что бы установить Fenom через composer пропишите в composer.json списке пакетов:

{
    "require": {
        "fenom/fenom": "2.*"
    }
}

и обновите зависимости: composer update.

Произвольная подгрузка

Клонируйте Fenom в любую директорию Вашего проекта: git clone https://github.com/bzick/fenom.git. Рекомендуется использовать последнюю версию. Для загрузки классов Fenom использует psr-0 стандарт. Таким образом вы можете:

  • использовать Ваш автозагрузчик, который понимает psr-0 формат для загрузки классов Fenom из директории src/ с пространством имен Fenom.
  • или использовать встроенный автозагрузчик Fenom: Fenom::registerAutoload(); для загрузки самого себя.

Так же вы можете использовать встроенный в Fenom автозагрузчик для загрузки других классов в psr-0 формате:

Fenom::registerAutoload(PROJECT_DIR."/classes");

Настройка Fenom

Есть два варианта инициировать объект шаблонизатора: через new оператор и фабрику. Пример создания Fenom через фабрику:

$fenom = Fenom::factory('/path/to/templates', '/path/to/compiled/template', $options);

Пример создания Fenom через оператор new:

$fenom = new Fenom(new Fenom/Provider('/path/to/templates'));
$fenom->setCompileDir('/path/to/template/cache');
$fenom->setOptions($options);
  • /path/to/templates — директория в которой хранятся шаблоны.
  • /path/to/template/cache — директория в которую Fenom будет сохранять PHP-кеш шаблонов
  • $options - битовая маска или массив параметров.

Использование

Что бы отобразить шаблон на экран используйте метод display:

// $fenom->display(string $template, array $variables) : void

$fenom->display("template/name.tpl", $vars);

Метод найдет шаблон template/name.tpl отрисует его в stdout, подставляя переменные из массива $vars.

Метод fetch возвращает вывод шаблона вместо его отображения на экран.

// $fenom->fetch(string $template, array $variables) : string

$result = $fenom->fetch("template/name.tpl", $vars);

Для вывода большого количества данных можно использовать поток

// $fenom->pipe(string $template, array $variables, callable $callback, int $chunk_size) : void

$fenom->pipe(
    "template/sitemap.tpl",
    $vars,
    $callback = [new SplFileObject("compress.zlib:///tmp/sitemap.xml.gz", "w"), "fwrite"], // поток с архивацией в файл /tmp/sitemap.xml.gz
    1e6 // размер куска данных в байтах
);

Поток позволяет обрабатывать большой результат по кускам, размер куска указывается в байтах аргументом $chunk_size. Каждый кусок передается в $callback для обработки или вывода.