承接 tleckie/template 相关项目开发

从需求分析到上线部署,全程专人跟进,保证项目质量与交付效率

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

tleckie/template

Composer 安装命令:

composer require tleckie/template

包简介

Fast and powerful php template engine. Syntax close to php for easy learning and management.

README 文档

README

Syntax close to php for easy learning and management.

Scrutinizer Code Quality Code Intelligence Status Build Status

Installation

You can install the package via composer:

composer require tleckie/template

Printing variable:

{{$name}}

Flexibility of spaces in variables:

<p>{{$name}}</p>

<p>{{   $user->getName()   }}</p>

<p>
    {{
    $user->getName()
    }}
</p>

Printing constant:

{{CONSTANT}}

Set variables:

{set $variable = 'test'}

{set $variable = 355}

{set $userId = 25}

{set $userModel = new \MyNamespace\User($userId)}

{set $userModel = new \MyNamespace\User(25, 'John')}

Dump:

{dump $users}

Comments:

{# {dump $users} #}

Extends template:

<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>

If you add changes to the included templates as extensions, the compiler will not show these changes. To remove the compiled files you have the "flushCompiled()" method

$tpl = new Template(__DIR__.'/tpl/', '/var/www/cache/compiled/');
$tpl->flushCompiled();

You can enable development mode so that templates are always compiled.

use Tleckie\Template\Template;

$tpl = new Template(
    __DIR__.'/tpl/', 
    '/var/www/cache/compiled/', 
    null, 
    true // development mode
);

Conditionals 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}

Nested loops:

Foreach and for supported.

<html>
<head></head>
<body>

    {foreach $data as $key => $persons}
        {foreach $persons as $id => $name}
            <div><string>{{$name}}:</string>{{ $key }}</div>
        {endforeach}
    {endforeach}
    
</body>
</html>

Helpers:

Create your own helpers to invoke on the template.

{{$this->arrayHelper::last($persons)}}

Create the template instance:

<?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);

Template List/Users.html

<html>
<head></head>
<body>
    {foreach $users as $user}
        <p>{{ strtoupper($user->getName()) }}</p>
    {endforeach}
</body>
</html>

Rules:

The Tleckie\Template\Compiler\Parser\Rules class establishes the rules for handling templates. You can create new rules to enrich your templating engine through the RuleInterface interface.

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
);

Helpers:

You can create your own helpers to be invoked from templates to do complex tasks, manipulate objects or strings.

The Template class has a method for adding helpers. Note that by this mechanism you can also add your dependency injector.

<?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()
);

Each helper added to the template object must have an alias to be invoked through it.

{{$this->arrayHelper::last($persons)}}

Helper example:

<?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);
    }
}

That's all! I hope this helps you ;)

统计信息

  • 总下载量: 17
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 2
  • 点击次数: 1
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 2
  • Watchers: 1
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2021-05-10

承接程序开发

PHP开发

VUE

Vue开发

前端开发

小程序开发

公众号开发

系统定制

数据库设计

云部署

网站建设

安全加固