phpugph / handlebars
handlebars.js 的超快 PHP8 实现
1.0.6
2023-09-11 02:00 UTC
Requires
- phpugph/components: 1.0.8
Requires (Dev)
- php-coveralls/php-coveralls: 2.6.0
- phpunit/phpunit: 10.3.3
- squizlabs/php_codesniffer: 3.7.2
README
handlebars.js 的超快 PHP8 实现
安装
$ composer install phpugph/handlebars
简介
PHP Handlebars 和 JS 接口,支持编译时辅助函数和超级棒的编译时错误报告。此版本的 Handlebars 基于缓存编译模板,从而提高了整体编译速度。未缓存时加载约 50 毫秒,缓存时约 30 毫秒。
基本用法
渲染
use 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}}
- Tokenizer 辅助函数,用于优化自定义代码生成以进行缓存
- 为未知辅助函数和未知部分提供事件处理器
- 默认辅助函数与 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');
参数
字符串 $name
- 部分的名称
返回 字符串
getPartials
返回所有已注册的部分
用法
$handlebars->getPartials();
参数
返回 array
registerHelper
著名的注册助手,与Handlebars API匹配
用法
$handlebars->registerHelper(string $name, function $helper);
参数
string $name
- 辅助函数的名称函数 $helper
- 辅助处理程序
返回 Handlebrs\Index
示例
$handlebars->registerHelper();
registerPartial
延迟注册部分到引擎,因为没有添加部分的方法...
用法
$handlebars->registerPartial(string $name, string $partial);
参数
string $name
- 辅助函数的名称字符串 $partial
- 辅助处理程序
返回 Handlebrs\Index
示例
$handlebars->registerPartial();
setCache
启用缓存选项
用法
$handlebars->setCache(string $path);
参数
字符串 $path
- 缓存路径
返回 Handlebrs\Index
示例
$handlebars->setCache('/path/to/cache/folder');
setPrefix
设置缓存文件的名称前缀
用法
$handlebars->setPrefix(string $prefix);
参数
字符串 $prefix
- 自定义前缀名称
返回 Handlebrs\Index
示例
$handlebars->setPrefix('special-template-');
unregisterHelper
registerHelper的反义词
用法
$handlebars->unregisterHelper(string $name);
参数
字符串 $name
- 辅助名称
返回 Handlebars\Index
示例
$handlebars->unregisterHelper();
unregisterPartial
registerPartial的反义词
用法
$handlebars->unregisterPartial(string $name);
参数
字符串 $name
- 部分名称
返回 Handlebars\Index
示例
$handlebars->unregisterPartial();