takemo101 / simple-templa
简单模板解析器
v0.1.4
2022-03-18 15:11 UTC
Requires
- php: ^8.0
Requires (Dev)
- php: ^8.0
- phpstan/phpstan: ^1.4
- phpunit/phpunit: ^9.5
README
Simple Templa 是一个简单的模板解析器。
享受吧!
如何使用
请按照以下方式使用
基本
use Takemo101\SimpleTempla\Environment\DefaultEnvironmentCreator; // create Environment object $environment = DefaultEnvironmentCreator::create(); // template text $text = " Hello, i like {{ data.language|strtoupper }}. PHP is {{ data.php_is.simple|strtolower|ucfirst }} and {{ data.php_is.nice|strtolower }}. {{ data.thank_you.thank|ucfirst }} {{ data.thank_you.you }} {{ data }} "; // create template object from text $template = $environment->createTemplate($text); // pass the data as an array $result = $template->parse([ 'data' => [ 'language' => 'php', 'php_is' => [ 'simple' => 'SIMPLE', 'nice' => 'NICE', ], 'thank_you' => [ 'thank' => 'thank', 'you' => 'you', ], ], ]); echo $result; // Hello, i like PHP. // PHP is Simple and nice. // Thank you. // // {"language":"php","php_is":{"simple":"SIMPLE","nice":"NICE"},"thank_you":{"thank":"thank","you":"you"}}
过滤器
您可以向环境对象添加过滤器
use Takemo101\SimpleTempla\Environment\DefaultEnvironmentCreator; use Takemo101\SimpleTempla\Filter\ { FilterProcessInterface, FilterName, Filter, }; /** * create test filter class */ final class TestFilter implements FilterProcessInterface { public function __construct( private string $replaceText, ) { // } // processing that returns only a specific character string public function execute(string $value): string { return $this->replaceText; } } // create Environment object $environment = DefaultEnvironmentCreator::create(); // add preset filter $environment->addPresetFilter( new Filter( new FilterName('test_filter'), new TestFilter('TEST'), ), ); // template text $text = "{{ test|test_filter }}"; // create template object from text $template = $environment->createTemplate($text); $result = $template->parse(['test' => '____']); echo $result; // TEST $result = $template->parse(['test' => 'ABCD']); echo $result; // TEST
值处理
您可以使用函数处理传递给模板的值。
use Takemo101\SimpleTempla\Environment\DefaultEnvironmentCreator; use Takemo101\SimpleTempla\Template\Value\Call; // create Environment object $environment = DefaultEnvironmentCreator::create(); // template text $text = "{{ data }}"; // create template object from text $template = $environment->createTemplate($text); // create Call object $call = new Call(fn ($v) => strtoupper($v)); // set the function to the value in the Call object $result = $template->parse(['data' => $call->of('hello')]); echo $result; // HELLO $result = $template->parse(['data' => $call->of('world')]); echo $result; // WORLD
模板语言
此模板语言中仅提供过滤器和变量。