dhii / delimited-token-template
一个灵活的handlebars样式模板实现
Requires
- php: ^7.1 | ^8.0
- dhii/output-renderer-interface: ^0.4-alpha1
Requires (Dev)
- phpunit/phpunit: ^6.0 | ^7.0 | ^8.0
- psr/container: ^1.0
- slevomat/coding-standard: ^6.0
- symfony/polyfill-php80: ^1.19
- vimeo/psalm: ^3.11.7 | ^4.0
This package is auto-updated.
Last update: 2024-09-22 18:25:54 UTC
README
一个灵活的handlebars样式模板实现。
详细信息
如果您需要将简单的占位符替换为值,这个模板实现很有用。例如电子邮件,其中包含类似“Hello, %username%”的文本,或者包含变量段的路径,如“/users/:username/profile”。
该模板支持任何字符串分隔符:“[*placeholder*]”,“~placeholder”和“{{placeholder}}”都将正常工作。左分隔符可以与右分隔符不同,分隔符可以包含多个字符,甚至可以省略其中一个分隔符。
当使用两个分隔符时,可以通过可配置的转义字符来转义它们,以便在渲染结果中使用它们。如果左分隔符和右分隔符分别为"{{"和"}}",转义字符为"",则字符串"{{ {{username}}"如果与上下文['username' => 'johnny']
一起渲染,将生成"{{ johnny"。
使用一个分隔符也是可能的,例如“Hello, :username!”如果与上下文['username' => 'johnny']
一起渲染,将生成“Hello, johnny!”。然而,在这种情况下,与使用两个分隔符相反,占位符名称仅限于字母数字字符,以及'_'、'-'和'.'(下划线、破折号和点)。此外,无法转义分隔符。因此,占位符名称不能包含分隔符。
用法
两个分隔符
此示例使用两个相同的分隔符,以及在占位符名称中间转义的分隔符。
use Dhii\Output\DelimitedTokenTemplate\Template; $template = new Template('Hello, %user\%name%!', '%', '%', '\\'); // Note escaped delimiter $template->render(['user%name' => 'johnny']); // Hello, johnny!
不同的长分隔符
此示例使用两个不同长度的不同分隔符。
use Dhii\Output\DelimitedTokenTemplate\Template; $template = new Template('Hello, -user\-name__!', '-', '__', '\\'); // Note completely different delimiters $template->render(['user-name' => 'johnny']); // Hello, johnny!
使用工厂的一个分隔符
通常,您的应用程序中会有一些关于分隔符和转义字符的约定。在这些情况下,能够根据该标准实例化多个模板,而不必每次都指定它,通常很有用。工厂可以代表这种约定。此示例使用仅包含左分隔符的标记。
use Dhii\Output\DelimitedTokenTemplate\TemplateFactory; $factory= new TemplateFactory(':', '', ''); // Note absence of right delimiter and escape character $profilePath = $factory->fromString('/users/:username/profile') ->render(['username' => 'johnny']); // '/users/johnny/profile' $settingsPath = $factory->fromString('/users/:userId/settings') ->render(['userId' => '1234']); // '/users/1234/settings'