lukaswhite/token-strings

用于替换字符串中标记的库

1.0 2018-10-23 10:50 UTC

This package is auto-updated.

Last update: 2024-09-24 05:06:06 UTC


README

这个简单的库允许您创建一个包含标记的字符串,例如

Dear [[FORENAME]] [[SURNAME]],

然后在运行时为标记提供值

[
	'FORENAME'  =>  'Joe',
	'SURNAME'   =>  'Bloggs',
]

然后运行标记替换

Dear Joe Bloggs,

它对页面标题、通知模板、邮件合并等非常有用。

安装

使用Composer安装

composer require lukaswhite/token-strings

基本用法

创建一个实例

use Lukaswhite\TokenStrings\Substitutor( );

$substitutor = new Substitutor(
	'Dear [[FORENAME]] [[SURNAME]],',
	[
		'forename'  =>  'Joe',
		'surname'   =>  'Bloggs',
	]
);

然后运行它

$replaced = $substitutor->run( );
// or
$replaced = ( string ) $substitutor;

高级用法

您可以在任何时候修改模板内容

$substitutor->setContent( 'Hey [[FORENAME]]' );

添加标记

$substitutor->addToken( 'age', 43 );

清除标记

$substitutor->clearTokens( );

如果您想为标记使用不同的标记

$substitutor->setOpeningTag( '{{' )->setClosingTag( '}}' );

由于上面示例中的闭合标签只是打开标签的反转,您可以直接这样做

$substitutor->setOpeningTag( '{{' );

除了传递字符串作为标记值外,您还可以传递一个对象,前提是它实现了魔法__toString()方法

class Person {

    private $forename;

    private $surname;

    public function __construct( $forename, $surname )
    {
        $this->forename = $forename;
        $this->surname = $surname;
    }
    
    public function __toString( ) 
    {
        return sprintf( '%s %s', $this->forename, $this->surname );
    }
}

$substitutor = new Substitutor(
	'Dear [[NAME]],',
	[
		'NAME'  =>  new Person( 'Joe', 'Bloggs' ),
	]
);

要获取可用标记的列表,调用getAvailableTokens()

validate()方法检查您提供的字符串是否不包含任何未提供值的标记。

注意

  • 标记只能包含字母、数字、破折号和下划线
  • 按照惯例,标记为大写,但如果您提供了一个包含标记的小写字符串的数组,它将为您将其转换为大写
  • 如果字符串包含您未提供值的标记,它将用空字符串替换它们