giuscris /interpolator
🚩 PHP中的类似JavaScript的字符串插值
dev-main
2022-02-12 14:53 UTC
This package is auto-updated.
Last update: 2024-09-12 20:36:26 UTC
README
PHP中的类似JavaScript的字符串插值。
用法
标量值
将变量数组传递给StringInterpolator
构造函数,然后使用StringInterpolator::interpolate()
方法进行字符串插值,其中变量可以包含在${
和}
之间
use Interpolator\StringInterpolator; $interpolator = new StringInterpolator(['name' => 'John']); echo $interpolator->interpolate('Hello ${name}'); // Hello John
您还可以使用索引符号访问数组键
$interpolator = new StringInterpolator(['numbers' => [77, 22, 31, 194]]); echo $interpolator->interpolate('The third number is ${numbers[2]}'); // The third number is 31
字符串键也可以使用点符号访问
$interpolator = new StringInterpolator(['person' => ['name' => 'John', 'age' => 29]]); echo $interpolator->interpolate('${person.name} is ${person.age} years old'); // John is 29 years old
对象
可以使用点符号访问公共属性
$person = new stdClass(); $person->name = 'John'; $person->age = 29; $interpolator = new StringInterpolator(['person' => $person]); echo $interpolator->interpolate('${person.name} is ${person.age} years old'); // John is 29 years old
但是您也可以调用方法和常量
class ExampleClass { public const ID = '#ExampleClass'; private int $timestamp; public function __construct() { $this->timestamp = time(); } public function getDate() { return date('Y-m-d', $this->timestamp); } } $interpolator = new StringInterpolator(['obj' => new ExampleClass()]); // The object #ExampleClass has this date: 2022-02-12 echo $interpolator->interpolate('The object ${obj.ID} has this date: ${obj.getDate()}');
您还可以传递闭包,并且它们将被调用
$interpolator = new StringInterpolator(['print' => function ($value) { return print_r($value, true); }]); // These are some values: Array ( [foo] => bar [0] => 4 [1] => 27 ) echo $interpolator->interpolate('These are some values: ${print(["foo" => "bar", 4, 27])}');