[TOC]
# 0 简介
>Twig php编写的模板引擎。
>Twig的分析主要学习其中编译原理的使用
## 0-0 项目地址
https://github.com/twigphp/Twig
## 0-1 官方文档
https://twig.symfony.com/doc/2.x/
# 1 目录结构
~~~
Twig\
lib\ 实现目录psr-0
src\ 封装目录psr-4
~~~
>Twig2.0目录的结构是过渡阶段,从psr-0加载规范到psr-4
>主要分析lib目录下的实现
~~~
Twig\lib\Twig
Cache\ ;编译后缓存处理
Error\
Extension\ ;核心扩展
Loader\ ;模板文件加载
Node\ ;语法树节点
NodeVisitor\ ;语法树节点遍历器
Profiler\
Sandbox\
Test\
TokenParser\ ;Token类
Util\
~~~
# 2 重要文件
>在Twig根目录下包含一些重要文件
>根据功能不同分为以下几部分
>
~~~
接口类
CacheInterface.php
ExistsLoaderInterface.php
ExtensionInterface.php
LoaderInterface.php
NodeCaptureInterface.php
NodeOutputInterface.php
NodeVisitorInterface.php
RuntimeLoaderInterface.php
SoureceContentLoaderInterface.php
TokenParserInterface.php
加载类
ContainerRuntimeLoader.php
FactoryRuntimeLoader.php
FileExtensionEscapingStrategy.php
运行环境类
Environment.php
Extension.php
ExtensionSet.php
Filter.php
Function.php
Error.php
Markup.php
Node.php
SimpleFilter.php
SimpleFunction.php
SimpleTest.php
Source.php
Template.php
TemplateWrapper.php
Test.php
编译类
BaseNodeVisitor.php
Compiler.php
ExpressionParser.php
Lexer.php
NodeTraverser.php
Parser.php
Token.php
TokenParser.php
TokenStream.php
~~~