bit3 / tag-replacer
此包已被弃用且不再维护。未建议替代包。
简单替换标签并将内置逻辑添加到字符串中。
dev-master / 1.x-dev
2013-12-02 10:01 UTC
Requires
- php: >=5.3
- doctrine/cache: 1.*
- symfony/property-access: 2.3.*
- twig/twig: 1.*
This package is not auto-updated.
Last update: 2022-02-01 12:26:07 UTC
README
此替换器可以替换标签并向字符串添加逻辑。
功能
标签
标签是包含在 {{
和 }}
中的特殊标签。它们有一个名称,并且可以由 ::
连接的参数作为查询字符串。
示例
{{tag::argument1::argument2?param1=value1¶m2=value2}}
用法
$replacer->registerTag('tag', function($name, $args, $params) { // $name => 'tag' // $args => array('argument1', 'argument2') // $params => array('param1' => 'value1, 'param2' => 'value2'); });
块
块是具有开始和结束的特殊标签。它们对它们包含的内容执行某些操作。
提示:您可以使用与标签相同名称注册一个块和一个标签,但块优先于标签!
示例
{{myblock::argument1::argument2?param1=value1¶m2=value2}}
Hello World
{{endmyblock}}
用法
$replacer->registerBlock('myblock', function($name, $args, $params, $body) { // $name => 'myblock' // $args => array('argument1', 'argument2') // $params => array('param1' => 'value1, 'param2' => 'value2'); // $body => "\nHello World\n" });
递归标签
递归标签是其他标签或块内的标签。
示例
{{tag1::{{tag2}}}}
令牌
令牌没有像标签那样的逻辑。它们是简单的 key=>value 对。要在内容中使用,请用 ##
包裹名称。
示例
##mytoken##
用法
$replacer->setToken('mytoken', 'myvalue');
标签、块和令牌的过滤器
过滤器会操纵标签、块或令牌的值。
示例
{{tag|myfilter}}
{{block|myfilter}}
...
{{endblock}}
##token|myfilter##
用法
$replacer->registerFilter('myfilter', function($value) { // $value => the result of {{tag}}, {{block}}...{{endblock}} or ##token## });
处理未知令牌
默认情况下,Replacer 将抛出异常,但此行为可以更改,有三个模式。可以针对标签和令牌或分别定义处理方式。
// trigger an error and leave empty $replacer->setUnknownDefaultMode(TagReplacer::MODE_ERROR); // trigger a warning and leave empty $replacer->setUnknownTagMode(TagReplacer::MODE_WARNING); // trigger a notice and leave empty $replacer->setUnknownTokenMode(TagReplacer::MODE_NOTICE);
使用 TagReplacer::MODE_EMPTY
,未知标签/令牌将用空值替换。使用 TagReplacer::MODE_SKIP
,未知标签/令牌将不会被替换。两者都可以与或不与 TagReplacer::MODE_ERROR
、TagReplacer::MODE_WARNING
或 TagReplacer::MODE_NOTICE
一起使用。
// trigger an error, but leave the tag as it is $replacer->setUnknownDefaultMode(TagReplacer::MODE_ERROR | TagReplacer::MODE_SKIP); // leave the tag as it is, but do not trigger an error $replacer->setUnknownDefaultMode(TagReplacer::MODE_SKIP); // leave empty and do not trigger an error $replacer->setUnknownDefaultMode(TagReplacer::MODE_EMPTY);
缓存
可以缓存插入标签。只需使用 doctrine 缓存实现之一。缓存仅影响插入标签,不影响块或令牌。
$replacer->setCache(new \Doctrine\Common\Cache\ArrayCache());