kmklabs/xbt
Composer 安装命令:
composer require kmklabs/xbt
包简介
XBT
README 文档
README
Intro
This is a simple library to compile an XHP template expression into an ordinary Hack class. We do this because we need to have a template inheritance and inclusion in XHP.
Features
- Template block/inclusion
- Accessing outer template from within
- Template inheritance, like
<xbt:template extends="path.dot.base">which will usepath/dot/base.xbt.php - Accessing parent blocks with
<xbt:parent />
Example
Suppose that we have this xbt template, named template.xbt.php:
<xbt:template doctype="true">
<html>
<body>
<h1>This is a header</h1>
<xbt:block name="main">
<p>This is inside a block</p>
<xbt:block name="submain">
<p>This is a block inside a block</p>
</xbt:block>
</xbt:block>
<p>This is a simple footer</p>
</body>
</html>
</xbt:template>
And have a view file named welcome.xbt.php:
<xbt:template base="template">
<xbt:block name="main">
<p>Welcome Home</p>
</xbt:block>
</xbt:template>
Load the file, and using this library, we can convert the template into an XHP class
$contents = file_get_contents("template.xbt.php");
$tokenizer = new Tokenizer($contents);
$tokenStream = $tokenizer->tokenize();
$parser = new Parser($tokenStream);
$result = $parser->parse();
$result should be like something like this:
<?php
class __xbt_4bc492834a61e30d17d158c6a052837584b1db90 extends App\Publishing\Lib\Xbt\Runtime
{
public function render()
{
return <x:frag>
<h1>This is a header</h1>
{$this->block_main()}
<p>This is a simple footer</p>
</x:frag>;
}
public function block_main()
{
return <x:frag>
<p>This is inside a block</p>
{$this->block_submain()}
</x:frag>;
}
public function block_submain()
{
return <x:frag>
<p>This is a block inside a block</p>
</x:frag>;
}
}
Laravel Binding and Config
Include the Xbt\LaravelServiceProvider to your project. Compiled xhp classes are in
config('view.compiled'), and compiled laravel views from that classes
are in config('view.xbt_cache').
Process
File -> Tokenizer -> TokenStream -> Parser -> Node -> Xhp
Tokenizer will tokenize the template into a TokenStream. We pass the
TokenStream into the Parser, and call the method parse to get the
Template node, the highest level representation node for a given template.
Node is the abstraction of xhp class in php/hack. The parsing process will
turn a template file into a Node before writing into files. Method compile
in Template will output XHP code.
kmklabs/xbt 适用场景与选型建议
kmklabs/xbt 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 18.27k 次下载、GitHub Stars 达 0, 最近一次更新时间为 2016 年 12 月 28 日, 在 PHP 生态内属于活跃度较高的组件。
它主要适用于以下技术方向: 「laravel」 「xhp」 「xbt」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。
我们在过去多个企业项目中使用过 kmklabs/xbt 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 kmklabs/xbt 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
与 kmklabs/xbt 相关的其它包
同方向 / 同关键字的高下载量 PHP Composer 包推荐,方便对比选型:
Class library for XHP
Class library for XHP
Use Bootstrap with XHP
Easily create JS controllers for XHP elements, and XHP wrappers for React elements
Appertly XHP Extras: Some useful XHP tags and utilities
Alfabank REST API integration
统计信息
- 总下载量: 18.27k
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 0
- 点击次数: 20
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2016-12-28