ayeo/parser

用正确数据替换占位符

dev-master / 1.0.x-dev 2016-06-06 08:40 UTC

This package is auto-updated.

Last update: 2024-09-18 07:59:42 UTC


README

Build Status Scrutinizer Code Quality Software License Code Coverage

简单的占位符解析器

解析器将特定的占位符替换为正确数据。

基本用法

让我们看看最简单的例子

$parser = new Parser;
$string = "Hello {{name}}!";
$parser->parse($string, ['name' => 'Nikola Tesla']); //returns: Hello Nikola Tesla!

当然,您可以使用对象代替原始数组

$parser = new Parser;

$customer = new Customer;
$customer->name = 'Nikola Tesla';

$string = "Hello {{customer.name}}!";
$parser->parse($string, ['customer' => $customer]); //returns: Hello Nikola Tesla!

解析器足够智能,可以使用getter访问私有属性。

它还支持嵌套对象

$parser = new Parser;

$customer = new Customer;
$address = new Address('Green Alley', 12, 'London', 'LN4 4GD', 'United Kingdom');
$customer->setAddress($address);

$string = "{{customer.address.street}}";
$parser->parse($string, ['customer' => $customer]); //returns: Green Alley

嵌套数组也欢迎

$parser = new Parser();
$data = ['user' =>  ['supervisor' => ['name' => 'Harry']]];
$parser->parse('Hi {{user.supervisor.name}}!', $data); //returns: Hi Harry!

使用自定义括号字符串

默认情况下,Parser 使用 "{{" 作为开字符串和 "}}" 作为闭字符串。您可以使用方法设置自己的括号字符串

$parser = new Parser();
$parser->setEmbraceStrings("*", "*");
$parser->parse("All *fruit* are *color*.", ["fruit" => "oranges", "color" => "orange"]);
//returns "All oranges are orange."

或使用构造函数

$parser = new Parser("", "*", "*");

注意,括号字符串不能包含 # 字符。

格式化

有时您需要为特定对象使用额外的格式化。最好的例子是 DateTime。实现此目标的最好方式是使用适配器模式(或装饰器)为您对象。解析器不应为您完成此操作。