eden / handlebars
PHP Handlebars 与 JS 接口,匹配编译时助手支持以及出色的编译时错误报告。
Requires
- php: >=5.4.1
- eden/core: 4.*
README
====
安装
composer install eden/handlebars
====
启用 Eden
以下文档在示例参考中使用 eden()
。启用此功能需要在以下部分中执行额外步骤,使用以下方式访问此软件包则不需要。
Eden\Handlebars\Index::i();
当使用 composer 时,没有简单的方法来访问包中的函数。作为解决方案,在您的代码中添加此常量将允许 eden()
在之后可用。
Eden::DECORATOR;
例如
Eden::DECORATOR;
eden()->inspect('Hello World');
====
介绍
PHP Handlebars 与 JS 接口,匹配编译时助手支持以及出色的编译时错误报告。这个版本的 Handlebars 基于缓存编译的模板,从而使得整体的编译时间更快。未缓存时加载大约 50ms,缓存时大约 30ms。
====
基本用法
渲染
$template = eden('handlebars')->compile('{{foo}} {{bar}}');
echo $template(array('foo' => 'BAR', 'bar' => 'ZOO'));
注册助手
$template = eden('handlebars')
->registerHelper('bar', function($options) {
return 'ZOO';
})
->compile('{{foo}} {{bar}}');
echo $template(array('foo' => 'BAR'));
注册部分模板
$template = eden('handlebars')
->registerPartial('bar', 'zoo')
->compile('{{foo}} {{> bar}}');
echo $template(array('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 设置了正确的权限以写入文件。
- 通过以下代码启用缓存:
eden('handlebars')->setCache(__DIR__.'/your/cache/folder/location');
- 如果文件夹位置不存在,则禁用缓存。
====
API
====
编译
返回一个绑定数据与模板的回调函数
用法
eden('handlebars')->compile(string $string);
参数
string $string
- 模板字符串
返回 function
- 模板绑定处理函数
示例
eden('handlebars')->compile();
====
获取缓存
返回活动缓存路径
用法
eden('handlebars')->getCache();
返回 Closure
====
获取助手
根据名称返回辅助函数
用法
eden('handlebars')->getHelper('if');
参数
string $name
- 辅助函数名称
返回 Closure
====
获取助手列表
返回所有已注册的辅助函数
用法
eden('handlebars')->getHelpers();
参数
返回 array
====
获取部分模板
根据名称返回部分
用法
eden('handlebars')->getPartial('foobar');
参数
string $name
- 部分的名称
返回 string
====
获取部分模板列表
返回所有已注册的部分
用法
eden('handlebars')->getPartials();
参数
返回 array
====
注册助手
匹配 Handlebars API 的著名注册辅助函数
用法
eden('handlebars')->registerHelper(string $name, function $helper);
参数
string $name
- 辅助函数名称function $helper
- 辅助函数处理程序
返回 Eden\Handlebars\Index
示例
eden('handlebars')->registerHelper();
====
注册部分模板
延迟将部分注册到引擎中,因为没有添加部分的方法...
用法
eden('handlebars')->registerPartial(string $name, string $partial);
参数
string $name
- 辅助函数名称string $partial
- 辅助函数处理程序
返回 Eden\Handlebars\Index
示例
eden('handlebars')->registerPartial();
====
设置缓存
启用缓存选项
用法
eden('handlebars')->setCache(string $path);
参数
string $path
- 缓存路径
返回 Eden\Handlebars\Index
示例
eden('handlebars')->setCache('/path/to/cache/folder');
====
设置前缀
设置缓存文件的名称前缀
用法
eden('handlebars')->setPrefix(string $prefix);
参数
string $prefix
- 自定义前缀名称
返回 Eden\Handlebars\Index
示例
eden('handlebars')->setPrefix('special-template-');
====
注销助手
registerHelper 的反义词
用法
eden('handlebars')->unregisterHelper(string $name);
参数
string $name
- 辅助函数名称
返回 Eden\Handlebars\Index
示例
eden('handlebars')->unregisterHelper();
====
注销部分模板
registerPartial 的反义词
用法
eden('handlebars')->unregisterPartial(string $name);
参数
string $name
- 部分名称
返回 Eden\Handlebars\Index
示例
eden('handlebars')->unregisterPartial();
====
向 Eden 的贡献遵循 Github 工作流程。请在贡献之前阅读。
##使用 Eden 仓库和您的分支设置您的机器
- 叉 fork 仓库
- 在本地终端中启动,从您的 fork 的
v4
分支创建一个新分支,分支名称描述您的更改。可能的分支名称类型- bugfix
- feature
- improvement
- 进行更改。始终确保在所有提交上签出 (-s)(git commit -s -m "提交信息")
##创建拉取请求
- 请在创建拉取请求之前确保运行
phpunit
。 - 将您的代码推送到您的远程 forked 版本。
- 返回到您的 GitHub 上 forked 版本,并提交一个拉取请求。
- Eden 开发者将审查您的代码,并在它被分类为合适时将其合并。