tleckie/template

快速且强大的PHP模板引擎。语法接近PHP,易于学习和管理。

1.0.2 2021-05-10 19:36 UTC

This package is auto-updated.

Last update: 2024-09-13 16:52:06 UTC


README

语法接近PHP,易于学习和管理。

Scrutinizer Code Quality Code Intelligence Status Build Status

安装

您可以通过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);
    }
}

这就是全部!希望这能帮到您 ;)