tleckie / template
快速且强大的PHP模板引擎。语法接近PHP,易于学习和管理。
1.0.2
2021-05-10 19:36 UTC
Requires
- php: ^8
Requires (Dev)
- friendsofphp/php-cs-fixer: v3.0.0-beta.2
- infection/infection: ^0.21.5
- mikey179/vfsstream: ^1.6
- phpunit/phpunit: ^9.5
README
语法接近PHP,易于学习和管理。
安装
您可以通过composer安装此包
composer require tleckie/template
打印变量
{{$name}}
变量中空格的灵活性
<p>{{$name}}</p>
<p>{{ $user->getName() }}</p>
<p>
{{
$user->getName()
}}
</p>
打印常量
{{CONSTANT}}
设置变量
{set $variable = 'test'}
{set $variable = 355}
{set $userId = 25}
{set $userModel = new \MyNamespace\User($userId)}
{set $userModel = new \MyNamespace\User(25, 'John')}
转储
{dump $users}
注释
{# {dump $users} #}
扩展模板
<html>
<head></head>
<body>
{extends Common/Header.html}
<p>List</p>
{foreach $users as $user}
<p>{{$user->getName()}}</p>
{endforeach}
{extends Common/Footer.html}
</body>
</html>
如果您将包含的模板更改作为扩展添加,编译器将不会显示这些更改。要删除编译文件,您可以使用"flushCompiled()"方法
$tpl = new Template(__DIR__.'/tpl/', '/var/www/cache/compiled/'); $tpl->flushCompiled();
您可以选择启用开发模式,以便模板始终被编译。
use Tleckie\Template\Template; $tpl = new Template( __DIR__.'/tpl/', '/var/www/cache/compiled/', null, true // development mode );
条件语句 if, else & elseif
{if $title === 'title'}
<div>{{$title}}</div>
{else}
It is not a headline!
{endif}
{if $type === 'Orange'}
<div>{{$type}}</div>
{elseif $title !== 'Apple'}
It is not an Apple!
{else}
Other fruit!
{endif}
{if $age >= 18}
<div>Yes!</div>
{else}
Ups :)
{endif}
{if $age !== 18}
<div>Yes!</div>
{else}
Ups :)
{endif}
嵌套循环
支持foreach和for
<html>
<head></head>
<body>
{foreach $data as $key => $persons}
{foreach $persons as $id => $name}
<div><string>{{$name}}:</string>{{ $key }}</div>
{endforeach}
{endforeach}
</body>
</html>
助手
创建自己的助手以在模板中调用。
{{$this->arrayHelper::last($persons)}}
创建模板实例
<?php require_once "vendor/autoload.php"; use Tleckie\Template\Template; $tpl = new Template(__DIR__ . '/tpl/', '/var/www/cache/compiled/'); $data = [ 'names' => ['Marcos', 'John', 'Pedro', 'Marta'], 'title' => 'User list', 'users' => [ new User('Marcos'), new User('John'), new User('Pedro') ] ]; $tpl->render('List/Users.html', $data);
模板列表/Users.html
<html>
<head></head>
<body>
{foreach $users as $user}
<p>{{ strtoupper($user->getName()) }}</p>
{endforeach}
</body>
</html>
规则
Tleckie\Template\Compiler\Parser\Rules类确立了处理模板的规则。您可以通过RuleInterface接口创建新规则,以丰富您的模板引擎。
use Tleckie\Template\Template; use Tleckie\Template\Compiler\Compiler; use Tleckie\Template\Compiler\Parser\Rules; $rules = [ new Rules(), new MyOwnRules() ]; $compiler = new Compiler($rules); $tpl = new Template( __DIR__.'/tpl/', '/var/www/cache/compiled/', $compiler );
助手
您可以从模板中调用自己创建的助手以执行复杂任务,操作对象或字符串。
Template类有一个添加助手的方法。请注意,通过此机制,您还可以添加您的依赖注入器。
<?php require_once "vendor/autoload.php"; use Tleckie\Template\Template; $tpl = new Template( __DIR__ . '/tpl/', '/var/www/cache/compiled/' ); $tpl->registerHelper( 'arrayHelper', new \MyNamespace\Infrastructure\Helpers\ArrayHelper() );
添加到模板对象的每个助手都必须有一个用于调用的别名。
{{$this->arrayHelper::last($persons)}}
助手示例
<?php namespace MyNamespace\Infrastructure\Helpers; use function end; /** * Class ArrayHelper * @package MyNamespace\Infrastructure\Helpers * @author Teodoro Leckie Westberg <teodoroleckie@gmail.com> */ class ArrayHelper { public static function last(array $array) { return end($array); } }
这就是全部!希望这能帮到您 ;)