aklump/token-engine
Composer 安装命令:
composer require aklump/token-engine
包简介
A style-independent engine for string token replacement.
README 文档
README
A style-independent engine for string token replacement.
Here are three included styles...
| Tokenized String | Final Output | Style |
|---|---|---|
| Hello {{ first }}, | Hello Peter, | TwigStyle |
| Hello @first, | Hello Peter, | AtStyle |
| Hello __first, | Hello Peter, | DoubleUnderscoreStyle |
Or make your own by implmenting \AKlump\TokenEngine\TokenStyleInterface
Basic Usage
$tokens = \AKlump\TokenEngine\TokenCollection::createFromKeyValueArray([ 'first' => 'Peter', ]); $replace_tokens = (new \AKlump\TokenEngine\ReplaceTokens($tokens, new \AKlump\TokenEngine\Styles\AtStyle())); 'Welcome Mary Smith,' === $replace_tokens('Hello @first,');
Callable Tokens
// Create a new token collection. $tokens = new \AKlump\TokenEngine\TokenCollection(); // Create a token with a callable value. $callable_token = new \AKlump\TokenEngine\Token('first|toUpperCase'); $callable_token->setValue(function (array $context) { // Oversimplified, but it makes the point of callables and context. return strtoupper($context['first']); }); $tokens->add($callable_token); // Use that token in a string template. $template = 'HEY {{ first|toUpperCase }}!'; // Create the styleized replacer. $replace = (new \AKlump\TokenEngine\ReplaceTokens($tokens, new \AKlump\TokenEngine\Styles\TwigStyle())); // Replace the token with runtime context. $runtime_context = ['first' => 'Peter']; $shout = $replace($template, $runtime_context); 'HEY PETER!' === $shout;
Working with Styles
$string = 'lorem'; $stylized = (new \AKlump\TokenEngine\Helpers\StylizeString(new \AKlump\TokenEngine\Styles\TwigStyle()))($string); '{{ lorem }}' === $stylized; $array = ['foo' => 'bar']; $stylized = (new \AKlump\TokenEngine\Helpers\ArrayStylizeKeys(new \AKlump\TokenEngine\Styles\TwigStyle()))($array); ['{{ foo }}' => 'bar'] === $stylized; $array = ['foo' => 'bar']; $stylized = (new \AKlump\TokenEngine\Helpers\ArrayStylizeValues(new \AKlump\TokenEngine\Styles\TwigStyle()))($array); ['foo' => '{{ bar }}'] === $stylized;
Generate CSV of Tokens for User Documentation
$examples = \Foo\Bar::getExampleTokens()->toKeyValueArray(); $examples = (new \AKlump\TokenEngine\Helpers\ArrayStylizeKeys(new TwigStyle()))($examples); $help_text = sprintf('Available tokens: %s', implode(', ', array_keys($examples)));
More Example Code
This comes from a project's documentation generation.
// Combine two different token collections. $collection = GetContextTokens::getExampleTokens(); $collection = $collection->merge(GetBudgetTokens::getExampleTokens()); // Sort them by their tokens. $collection = $collection->sort('token'); // We want to the documentation to show the styled token. $styler = new \AKlump\TokenEngine\Helpers\StylizeString(new \AKlump\TokenEngine\Styles\AtStyle()); // Iterate on the combined collection and access token properties. $table_data = []; foreach ($collection as $token) { $table_data[] = [ 'token' => $styler($token->token()), 'description' => $token->description(), 'example' => $token->value(), ]; } $table = (new CreateTable())($table_data);
aklump/token-engine 适用场景与选型建议
aklump/token-engine 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 110 次下载、GitHub Stars 达 0, 最近一次更新时间为 2023 年 12 月 02 日, 在 PHP 生态内属于活跃度较高的组件。
我们在过去多个企业项目中使用过 aklump/token-engine 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 aklump/token-engine 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
统计信息
- 总下载量: 110
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 0
- 点击次数: 5
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: BSD-3-Clause
- 更新时间: 2023-12-02