xp-forge/handlebars 问题修复 & 功能扩展

解决BUG、新增功能、兼容多环境部署,快速响应你的开发需求

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

xp-forge/handlebars

Composer 安装命令:

composer require xp-forge/handlebars

包简介

Handlebars for XP Framework

关键字:

README 文档

README

Build status on GitHub XP Framework Module BSD Licence Requires PHP 7.4+ Supports PHP 8.0+ Latest Stable Version

The Handlebars template language implemented for the XP Framework.

use com\handlebarsjs\HandlebarsEngine;

$engine= new HandlebarsEngine();
$transformed= $engine->render('Hello {{name}}', [
  'name' => 'World'
]);

Templating

Templates can be loaded from the file system. The following loads and transforms the template src/main/handlebars.handlebars:

use com\handlebarsjs\HandlebarsEngine;

$engine= (new HandlebarsEngine())->withTemplates('src/main/handlebars');
$transformed= $engine->transform('hello', [
  'name' => 'World'
]);

Templates can also be declared inline:

use com\handlebarsjs\HandlebarsEngine;

$engine= (new HandlebarsEngine())->withTemplates(['test' => 'Hello {{name}}']);
$transformed= $engine->transform('hello', [
  'name' => 'World'
]);

If you need more flexibility, you can implement and then pass instances of the following:

  • new com.github.mustache.InMemory([:string] $templates))
  • new com.github.mustache.FilesIn(string|io.Folder $arg, string[] $extensions)
  • new com.github.mustache.ResourcesIn(string|lang.IClassLoader $arg, string[] $extensions)
  • (Your own implementation of com.github.mustache.templates.Templates)

Helpers supported

The following helpers are built in:

The "if" block

{{#if licence}}
  A licence is available
{{/if}}

{{#if licence}}
  A licence is available
{{else}}
  <em>Warning: No licence is available!</em>
{{/if}}

{{#if content}}
  Content
{{else if hub}}
  Hub
{{else}}
  Default
{{/if}}

The "unless" block

{{#unless licence}}
  <em>Warning: No licence is available!</em>
{{/unless}}

The "with" block

{{#with person}}
  Full name: {{firstName}} {{lastName}}
{{/with}}

The "each" block

<ul>
  {{#each students}}
    <li>Student's name: {{firstName}} {{lastName}}</li>
  {{/each}}
</ul>

All of the above block helpers support the else statement.

The "log" helper

{{log '"Hello", Frank\'s mother said.'}}
{{log 'No publishers for' category level="warn"}}

To enable logging, pass either a closure or a util.log.LogCategory instance to the engine:

use util\log\Logging;
use util\cmd\Console;

// Use a logger category:
$logger= Logging::named('trace')->toConsole();

// Or a closure:
$logger= function($args, $level) { Console::writeLine('[', $level, '] ', ...$args); };

$engine= (new HandlebarsEngine())->withLogger($logger);
$engine->render(...);

Custom helpers

To add custom helpers, use withHelpers() and pass functions. The following yields Hello WORLD:

use com\handlebarsjs\HandlebarsEngine;

$engine= (new HandlebarsEngine())->withHelper('upper', function($node, $context, $options) {
  return strtoupper($options[0]);
});
$transformed= $engine->render('Hello {{upper name}}', [
  'name' => 'World'
]);

The parameters passed are the following:

  • node: The current node, a com.github.mustache.Node instance
  • context: The current context, a com.github.mustache.Context instance
  • options: The resolved options passed, in the above case the string "World" (which is what name resolves to)

Futher reading

https://handlebars-lang.github.io/spec/

xp-forge/handlebars 适用场景与选型建议

xp-forge/handlebars 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 48.23k 次下载、GitHub Stars 达 0, 最近一次更新时间为 2015 年 01 月 10 日, 在 PHP 生态内属于活跃度较高的组件。

它主要适用于以下技术方向: 「module」 「xp」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。

我们在过去多个企业项目中使用过 xp-forge/handlebars 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。

围绕 xp-forge/handlebars 我们能提供哪些服务?
定制开发 / 二次开发

基于 xp-forge/handlebars 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。

BUG 修复 & 性能优化

线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。

项目外包 & 长期维护

承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。

yvsm@zunyunkeji.com QQ:316430983 微信:yvsm316 西安尊云信息科技 · 专注 PHP / Go / 分布式系统研发

统计信息

  • 总下载量: 48.23k
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 0
  • 点击次数: 4
  • 依赖项目数: 1
  • 推荐数: 0

GitHub 信息

  • Stars: 0
  • Watchers: 1
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: BSD-3-Clause
  • 更新时间: 2015-01-10