mezon/template-engine

为您的项目提供的小型模板引擎

1.0.8 2022-07-18 11:52 UTC

This package is auto-updated.

Last update: 2024-09-18 16:30:44 UTC


README

Open Collective codecov

简介

模板引擎提供了带有变量、循环和其他编程抽象的模板编译例程。

资源加载

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>