cradlephp / handlebars
handlebars.js的PHP7超快实现
2.3.0
2020-06-20 10:11 UTC
Requires
- cradlephp/components: ~2.3.0
Requires (Dev)
- php-coveralls/php-coveralls: ~2.1.0
- phpunit/phpunit: 7.0.2
- squizlabs/php_codesniffer: 3.2.3
README
handlebars.js的PHP7超快实现
安装
$ 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
- each - 和
去功能(或功能相反的东西)
- 不支持文件模板。
- 您需要加载它们并将其传递给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();