eden/handlebars

PHP Handlebars 与 JS 接口,匹配编译时助手支持以及出色的编译时错误报告。

5.0.0 2016-05-07 06:12 UTC

This package is auto-updated.

Last update: 2024-09-13 21:03:58 UTC


README

Build Status

====

安装

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

去除特性(或者特性相反的东西)

  • 不支持文件模板。
    • 您需要将它们加载并传递给 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 贡献

Eden 的贡献遵循 Github 工作流程。请在贡献之前阅读。

##使用 Eden 仓库和您的分支设置您的机器

  1. 叉 fork 仓库
  2. 在本地终端中启动,从您的 fork 的 v4 分支创建一个新分支,分支名称描述您的更改。可能的分支名称类型
    • bugfix
    • feature
    • improvement
  3. 进行更改。始终确保在所有提交上签出 (-s)(git commit -s -m "提交信息")

##创建拉取请求

  1. 请在创建拉取请求之前确保运行 phpunit
  2. 将您的代码推送到您的远程 forked 版本。
  3. 返回到您的 GitHub 上 forked 版本,并提交一个拉取请求。
  4. Eden 开发者将审查您的代码,并在它被分类为合适时将其合并。