myerscode / templex
一个轻量级的基于正则表达式的模板渲染引擎
1.1.2
2022-02-11 22:03 UTC
Requires
- php: ^8.0
- myerscode/utilities-files: ^1.0|^2.0
- myerscode/utilities-strings: ^1.0|^2.0
Requires (Dev)
- phpunit/phpunit: ^9.5
- squizlabs/php_codesniffer: ^3.6
- symfony/var-dumper: ^5.3
This package is auto-updated.
Last update: 2024-09-12 03:41:55 UTC
README
一个基于正则表达式的轻量级PHP模板渲染引擎
为什么这个包很有用?
此包允许您定义占位符,然后使用PHP变量填充模板。由于引擎使用正则表达式,它不依赖于使用 eval
或将代码包含并运行作为PHP。
这意味着您可以简单地生成您需要的任何PHP(或任何类型的文本内容填充文件)。
安装
您可以通过composer安装此包
composer require myerscode/templex
用法
$templateDirectory = __DIR__ . '/Resources/Templates/; $templateExtentions = 'stub'; $templex = new Templex($templateDirectory, $templateExtentions); echo $templex->render('index');
模板目录
模板
模板可以是任何形式的文本文件。默认情况下,Templex会查找具有.stub
或.template
文件扩展名的文件。
Templex使用<{
和}>
作为打开和关闭锚点标记来查找和处理插槽
,这些插槽可用于从占位符和逻辑生成动态视图。
插槽
插槽是Templex的“魔法”。它们是在模板上执行替换和填充操作的独立功能,以创建最终的渲染输出。
默认包含的插槽有
- IncludeSlot - 包含另一个模板的内容
- ControlSlot - 基于流程逻辑的处理,如foreach、if语句
- VariableSlot - 替换单个占位符
包含
为了创建可重用的占位符,可以通过模板名称简单地包含另一个模板。
<{ include partials.header }>
条件
Templex可以处理嵌套插槽,因此嵌套控制条件将按照找到的顺序处理。
条件可以是变量、数字、布尔值或文本字符串,并且可以使用常用的比较评估器。
<{ if( $value === 'foobar' ) }>
...
<{ if( $value > 7 ) }>
...
<{ if( $value == true ) }>
...
<{ if( $value != false ) }>
示例
<{ if( $value === $condition ) }>
<p>That value was true!</p>
<{ endif }>
<{ if( $value === 'foobar' ) }>
<p>That value was true!</p>
<{ else }>
<p>That value was false!</p>
<{ endif }>
循环
循环将使用数组变量在模板中创建多个迭代。
示例
<ul class="row">
<{ foreach( $users as $user ) }>
<li><{ $user }></li>
<{ endforeach }>
</ul>
变量
变量在找到匹配的锚点时被替换。它们可以在渲染时传递,也可以通过其他插槽(如循环)创建。
示例
Hi <{ $name }>!
问题和贡献
我们非常乐意接受添加功能或修复的pull请求。
有关功能请求或错误报告,可以在Github Issue Tracker上提交。
请阅读Myerscode 贡献指南,了解我们的行为准则。
许可
MIT许可(MIT)。请参阅许可文件获取更多信息。