ayeo / parser
用正确数据替换占位符
dev-master / 1.0.x-dev
2016-06-06 08:40 UTC
Requires
- php: >=5.4.0
Requires (Dev)
- phpunit/phpunit: ~4.8
This package is auto-updated.
Last update: 2024-09-18 07:59:42 UTC
README
简单的占位符解析器
解析器将特定的占位符替换为正确数据。
基本用法
让我们看看最简单的例子
$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。实现此目标的最好方式是使用适配器模式(或装饰器)为您对象。解析器不应为您完成此操作。