構建自己的PHP框架(Twig模板引擎)


完整項目地址:https://github.com/Evai/Aier

Twig 模板引擎

模版引擎 twig 的模板就是普通的文本文件,也不需要特別的擴展名,.html .htm .twig 都可以。模板內的 變量 和 表達式 會在運行的時候被解析替換,標簽(tags)會來控制模板的邏輯。
 

安裝Twig

命令行運行:

composer require "twig/twig:~1.0"

 

在services目錄下創建Twig.php:

 

<?php

/**
 * Class Twig
 */
class Twig
{
    public $view;

    public $data;

    public $twig;

    public $path = BASE_PATH . '/app/Views/';

    /**
     * Twig constructor.
     * @param $view
     * @param $data
     */
    public function __construct($view, $data)
    {
        $loader = new Twig_Loader_Filesystem($this->path);

        $this->twig = new Twig_Environment($loader, array(
            'cache' => BASE_PATH . '/cache/views/',
            'debug' => true
        ));

        $this->view = $view;
        $this->data = $data;

    }

    /**
     * @param $view
     * @param array $data
     * @return Twig
     */
    public static function render($view, $data = array())
    {

        return new Twig($view, $data);

    }

    public function __destruct()
    {
        $this->twig->display($this->view, $this->data);
    }
}

 

執行命令:

 

composer dump-autoload

 

在app/Views/ 下分別創建一個app.twig文件和index.twig 文件(.html文件也是可以的):

 

{#app.twig#}

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>app</title>
</head>

<body>

<header>header</header>

{% block content %}

{% endblock %}

<footer>footer</footer>

</body>
</html>
{#index.twig#}
{% extends 'app.twig' %}
{% block content %}

hello {{ data.name }}, your mobile is {{ data.mobile }}

{% endblock %}

 

在控制器中添加:

 

$data = ['data' => ['name' => 'evai', 'mobile' => 12345678910]];

return Twig::render('index.twig', $data);

 

刷新瀏覽器,可以看到顯示如下頁面:

 

 

 詳細文檔請參考twig官網地址


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM