carry0987 / template-engine
轻量且快速的PHP模板引擎,使用Composer
1.3.10
2024-09-23 13:59 UTC
Requires
- php: >=8.1
- carry0987/redis-tool: ^1.1
- carry0987/sanite: ^1.1
- carry0987/utils: ^1.0
README
这是一个轻量且快速的PHP模板引擎,使用Composer,具有缓存能力,可定制缓存寿命,模板继承,以及支持Redis和MySQL。
这个功能强大且简单的模板引擎提供了存储和缓存模板的灵活性。无论是想要本地保存模板、考虑长期缓存、嵌套模板文件以实现复杂设计、使用Redis进行持久化存储,还是通过MySQL数据库管理模板,此引擎都能高效且轻松地满足您的需求。
安装
composer require carry0987/template-engine
功能
- 支持纯HTML作为模板
- 支持CSS、JS文件缓存
- 支持CSS模型缓存
- 自动最小化CSS缓存
- 缓存寿命
用法
您可以选择将模板文件版本保存到数据库或Redis
保存到数据库
// Database configuration $config = array( 'host' => 'localhost', 'port' => 3306, 'database' => 'template', 'username' => 'root', 'password' => '' ); $database = new DBController($config);
保存到Redis
// Redis configuration $redisConfig = array( 'host' => 'redis', 'port' => 6379, 'password' => '', 'database' => 1 ); $redis = new RedisController($redisConfig);
缓存CSS & JS文件
CSS缓存
缓存CSS的特定部分
html
<link href="{loadcss common.css index}" rel="stylesheet" type="text/css">
您可以使用变量作为特定部分
<!--{eval $current_page = 'index'}--> <link href="{loadcss model.css $current_page}" rel="stylesheet" type="text/css">
CSS
/*[index]*/ .header { display: block; } .link { color: blue; } /*[/index]*/
输出: HTML
<link href="cache/model_index.css?v=Ad0Dwf8" rel="stylesheet" type="text/css">
cache/model_index.css
/* index */ .header{display:block}.link{color:blue} /* END index */
此外,使用array
<!--{eval $current_page = array('index','test')}--> <link href="{loadcss model.css $current_page}" rel="stylesheet" type="text/css">
或者string
,用,
分隔
<link href="{loadcss model.css index,test}" rel="stylesheet" type="text/css">
CSS
/*[index]*/ .header { display: block; } .link { color: blue; } /*[/index]*/ /*[test]*/ .header { display: inline-block; } .link { color: red; } /*[/test]*/
输出: HTML
<link href="cache/model_MULTIPLE.css?v=Ad0Dwf8" rel="stylesheet" type="text/css">
cache/model_MULTIPLE.css
/* index */ .header{display:block}.link{color:blue} /* END index */ /* test */ .header{display:inline-block}.link{color:red} /* END test */
直接缓存CSS文件
html
<link href="{loadcss common.css}" rel="stylesheet" type="text/css">
输出
<link href="static/css/common.css?v=Ad0Dwf8" rel="stylesheet" type="text/css">
JS缓存
html
<script src="{loadjs jquery.min.js}" type="text/javascript"></script>
输出
<script src="static/js/jquery.min.js?v=B22PE8W" type="text/javascript"></script>
静态文件
html
<img src="{static img/logo.png}" alt="logo">
输出
<img src="static/img/logo.png" alt="logo">
函数
echo
函数
html
<span>{$value}</span>
PHP
<span><?php echo $value; ?></span>
assign variable
函数
注意:不要在
block
标签中放置任何PHP脚本
html
<!--{block test}--> <span>html content</span> <!--{/block}-->
PHP
<?php $test = <<<EOF <span>html content</span> EOF; ?>
if
函数
html
<!--{if expr1}--> statement1 <!--{elseif expr2}--> statement2 <!--{else}--> statement3 <!--{/if}-->
PHP
<?php if(expr1) { ?> statement1 <?php } elseif(expr2) { ?> statement2 <?php } else { ?> statement3 <?php } ?>
loop
函数(不带key)
html
<!--{loop $array $value}--> <span>username</span> <!--{/loop}-->
PHP
<?php foreach($array as $value) {?> <span>username</span> <?php } ?>
loop
函数(带key)
html
<!--{loop $array $key $value}--> <span>{$key} = {$value}</span> <!--{/loop}-->
PHP
<?php foreach($array as $key => $value) {?> <span><?php echo $key; ?> = <?php echo $value; ?></span> <?php } ?>
eval
函数
html
<!--{eval $value = 1+2}--> <span>{$value}</span>
PHP
<?php eval $value = 1+2;?> <span><?php echo $value; ?></span>
PRESERVE
标记
html
<!--{PRESERVE}--> <span>html content</span> <!--{/PRESERVE}--> /*{PRESERVE}*/ <script> const value = 1+2; document.querySelector('span').innerHTML = `Value: ${value}`; </script> /*{/PRESERVE}*/
PHP
<span>html content</span> <script> const value = 1+2; document.querySelector('span').innerHTML = `Value: ${value}`; </script>