mezon / template-engine
为您的项目提供的小型模板引擎
1.0.8
2022-07-18 11:52 UTC
Requires
- php: >=7.2.0
- mezon/functional: ^1.0
Requires (Dev)
- infection/infection: ^0.21.5
- phpunit/php-token-stream: 3.1.2
- phpunit/phpunit: ^8.5
- vimeo/psalm: ^4.2
README
简介
模板引擎提供了带有变量、循环和其他编程抽象的模板编译例程。
资源加载
Mezon 具有一个简单的存储,用于存储 CSS 和 JS 文件。当页面渲染时,模板引擎访问它,并将文件放入渲染页面中的 'head' 标签中。
存储是全局访问的,因此任何组件都可以将其自己的资源添加到页面中。
可以这样操作
$TemplateResources = new TemplateResources(); // getting access to the global storage $TemplateResources->add_css_file( './res/test.css' ); // additing CSS file $TemplateResources->add_js_file( './include/js/test.js' ); // additing JS file $TemplateResources->add_css_files( [ './res/test1.css' , './res/test2.css' ] ); // additing CSS files $TemplateResources->add_js_files( [ './include/js/test1.js' , './include/js/test2.js' ] ); // additing JS files
资源存储相当智能,因此您不能添加具有相同路径的许多文件。
$TemplateResources = new TemplateResources(); // getting access to the global storage $TemplateResources->add_css_file( './res/test.css' ); // additing CSS file $TemplateResources->add_css_file( './res/test.css' ); // no file will be added
但这种方式添加资源相当低级,对于大量资源文件可能不方便。因此,我们创建了资产。有关其文档,可以在此处阅读这里
页面编译
TemplateEngine 类提供了内容编译例程。此函数通过调用 TemplateEngine::print_record( $String , $Data ) 来替换所有变量 {variable-name} 为 $Data 中的值。
// outputs "v1 v2" print( TemplateEngine::print_record( '{var1} {var2}' , [ 'var1' => 'v1' , 'var2' => 'v2' ] ) ); // or object $Object = new stdClass(); $Object->var1 = 'v1'; $Object->var2 = 'v2'; // outputs "v1 v2" print( TemplateEngine::print_record( '{var1} {var2}' , $Object ) ); // $Data may contain nested arrays or objects // outputs "v1 v2 v3" print( TemplateEngine::print_record( '{var1} {var2} {var3}' , [ $Object , [ 'var3' => 'v3' ] ] ) );
模板变量
您可以使用由 '{' 和 '}' 符号界定的模板变量。
例如
扩展页面编译
您也可以在模板中使用循环。
例如
$Engine = new TemplateEngine(); $Engine->set_page_var( 'var1' , 'value1' ); $Engine->set_page_var( 'var2' , 'value2' ); $Content = '{var1} & {var2}'; print( $Engine->compile_page_vars( $Content ) ); // outputs "value1 value2"
输出将如下
row : 1<br> row : 2<br> row : Last<br>