cradlephp/handlebars

handlebars.js的PHP7超快实现

2.3.0 2020-06-20 10:11 UTC

This package is auto-updated.

Last update: 2024-09-14 15:37:32 UTC


README

handlebars.js的PHP7超快实现

Travis CI Coverage Status Latest Stable Version Total Downloads Latest Unstable Version License

安装

$ composer install cradlephp/handlebars

简介

PHP Handlebars和JS接口,匹配编译时辅助功能支持,以及超棒的编译时错误报告。这个版本的Handlebars通过缓存编译的模板,从而提高了整体的编译速度。未缓存加载约为50ms,缓存加载约为30ms。

基本用法

渲染

use Cradle\Handlebars\HandlebarsHandler as Handlebars;
$handlebars = new Handlebars();
$template = $handlebars->compile('{{foo}} {{bar}}');

echo $template(['foo' => 'BAR', 'bar' => 'ZOO']);

注册辅助函数

$handlebars->registerHelper('bar', function($options) {
    return 'ZOO';
});

$template = $handlebars->compile('{{foo}} {{bar}}');

echo $template(['foo' => 'BAR']);

注册部分

$handlebars->registerPartial('bar', 'zoo');
$template = $handlebars->compile('{{foo}} {{> bar}}');

echo $template(['foo' => 'BAR']);

特性

  • PHP API - 设计与handlebars.js文档相匹配
    • registerHelper() - 与handlebars.js中期望的完全一致(除了PHP语法)
    • registerPartial() - 接受字符串和函数作为回调
    • {{./foo}}{{../bar}}这样的字面量会被正确评估
    • 支持注释如{{!-- Something --}}{{! Something }}
    • 支持缩进如{{~#each}}{{~foo~}}
    • 支持Mustache向后兼容{{#foo}}{{this}}{{/foo}}
    • 支持标记辅助函数以优化自定义代码生成并缓存
    • 为未知辅助函数和未知部分提供事件处理器
  • 默认辅助函数与handlebars.js匹配
    • each - 和{{#each foo as |value, key|}}
      • 请注意,由于对象的大小,each可能很慢
      • 我们需要帮助优化这一点
    • with
    • unless
    • if

去功能(或功能相反的东西)

  • 不支持文件模板。
    • 您需要加载它们并将其传递给Handlebars。
    • 如果这是问题,您应该考虑其他Handlebars PHP库
    • 您始终可以为此创建一个辅助函数
    • 在请求的情况下将考虑此去功能(创建一个问题 :))
  • 部分故障转移
    • 我们还没有机会做这件事,因为我们没有这个需求
    • 在请求的情况下将考虑此去功能(创建一个问题 :))
  • 安全字符串/转义
    • PHP有可以将字符串转换为“安全”的函数。
    • 我们不想创建在其他环境中已经存在的东西
    • 在请求的情况下将考虑此去功能(创建一个问题 :))
  • 工具
    • PHP有支持handlebars.js中列出的大多数工具的函数
    • 我们不想创建在其他环境中已经存在的东西
    • 在请求的情况下将考虑此去功能(创建一个问题 :))
  • 动态部分
    • 在我们管道的底部
    • 因为它难以重新创建
    • 以及实用性
    • 在请求的情况下将考虑此去功能(创建一个问题 :()
  • 内联部分
    • 待办事项
  • 装饰器
    • 待办事项
  • 框架
    • 待办事项

生产就绪

当您的模板准备用于生产(实时)环境时,建议使用缓存。要启用缓存

  • 创建一个缓存文件夹,并确保handlebars写入文件的权限设置正确。
  • 使用$handlebars->setCache(__DIR__.'/your/cache/folder/location');启用缓存
  • 如果文件夹位置不存在,则禁用缓存。

API

compile

返回一个将数据与模板绑定在一起的回调

用法

$handlebars->compile(string $string);

参数

  • string $string - 模板字符串

返回 function - 模板绑定处理程序

示例

$handlebars->compile();

getCache

返回活动缓存路径

用法

$handlebars->getCache();

返回 Closure

getHelper

根据名称返回辅助函数

用法

$handlebars->getHelper('if');

参数

  • string $name - 辅助函数的名称

返回 Closure

getHelpers

返回所有已注册的辅助函数

用法

$handlebars->getHelpers();

参数

返回 array

getPartial

根据名称返回部分

用法

$handlebars->getPartial('foobar');

参数

  • string $name - 部分的名称

返回 string

getPartials

返回所有已注册的局部组件

用法

$handlebars->getPartials();

参数

返回 array

registerHelper

著名的与Handlebars API匹配的注册助手

用法

$handlebars->registerHelper(string $name, function $helper);

参数

  • string $name - 辅助函数的名称
  • function $helper - 辅助处理程序

返回 Eden\Handlebrs\Index

示例

$handlebars->registerHelper();

registerPartial

由于没有添加局部组件的方法,因此延迟注册局部组件到引擎...

用法

$handlebars->registerPartial(string $name, string $partial);

参数

  • string $name - 辅助函数的名称
  • string $partial - 辅助处理程序

返回 Eden\Handlebrs\Index

示例

$handlebars->registerPartial();

setCache

启用缓存选项

用法

$handlebars->setCache(string $path);

参数

  • string $path - 缓存路径

返回 Eden\Handlebrs\Index

示例

$handlebars->setCache('/path/to/cache/folder');

setPrefix

设置缓存文件的文件名前缀

用法

$handlebars->setPrefix(string $prefix);

参数

  • string $prefix - 自定义前缀名称

返回 Eden\Handlebrs\Index

示例

$handlebars->setPrefix('special-template-');

unregisterHelper

registerHelper的反义词

用法

$handlebars->unregisterHelper(string $name);

参数

  • string $name - 辅助名称

返回 Eden\Handlebars\Index

示例

$handlebars->unregisterHelper();

unregisterPartial

registerPartial的反义词

用法

$handlebars->unregisterPartial(string $name);

参数

  • string $name - 局部组件名称

返回 Eden\Handlebars\Index

示例

$handlebars->unregisterPartial();