多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
[TOC] * * * * * ## 1 文件源代码(thinkphp\library\think\Template.php) ~~~ protected $data = []; protected $config = [ 'view_path' => '', 'view_suffix' => '.html', 'cache_suffix' => '.php', 'tpl_deny_func_list' => 'echo,exit', 'tpl_deny_php' => false, 'tpl_begin' => '{', 'tpl_end' => '}', 'strip_space' => false, 'tpl_cache' => true, 'compile_type' => 'file', 'cache_prefix' => '', 'cache_time' => 0, 'cache_record_file' => 'cache_record_file', 'layout_on' => false, 'layout_name' => 'layout', 'layout_item' => '{__CONTENT__}', 'taglib_begin' => '{', 'taglib_end' => '}', 'taglib_load' => true, 'taglib_build_in' => 'cx', 'taglib_pre_load' => '', 'display_cache' => false, 'cache_id' => '', 'tpl_replace_string' => [], 'tpl_var_identify' => 'array', 'namespace' => '\\think\\template\\driver\\', ]; private $literal = []; private $includeFile = []; private $md5Key = ''; protected $storage = null; ~~~ `public function __construct(array $config = [])` `public function assign($name, $value = '')` `public function __set($name, $value)` `public function config($config)` `public function get($name = '')` `public function display($template, $vars = [], $config = [])` `public function fetch($content, $vars = [])` `public function isCache($cacheId)` `public function parse(&$content)` `public function parseTagLib($tagLib, &$content, $hide = false)` `public function parseAttr($str, $name = null)` `public function parseVar(&$varStr)` `public function parseVarFunction(&$varStr)` `public function parseThinkVar(&$vars)` `private function stripPreg($str)` `private function checkCache($template, $cacheFile)` `private function compiler(&$content, $cacheFile)` `private function parsePhp(&$content)` `private function parseLayout(&$content)` `private function parseInclude(&$content)` `private function parseExtend(&$content)` `private function parseLiteral(&$content, $restore = false)` `private function parseBlock(&$content)` `private function getIncludeTagLib(&$content)` `private function parseTag(&$content)` `private function parseTemplateName($templateName)` `private function parseTemplateFile($template)` `private function getRegex($tagName)` ## 2 文件分析 > 1 成员变量 ~~~ $data: 控制保存到模板的键值对变量 $config: 模板解析的配置参数 $literal: 模板原生语句数组 $includeFile:模板包含文件数组 $md5key: 模板文件md5索引 $storage 模板缓存机制?? ~~~ > 2 public方法 模板解析控制 `public function config($config){}` `public function __set($name, $value){}` 模板变量 `public function assign($name, $value = ''){}` `public function get($name = ''){}` (View.php??) 模板渲染 `public function display($template, $vars = [], $config = []){}` (displaye??) 模板解析 `public function fetch($content, $vars = []){}` `public function isCache($cacheId){}` `public function parse(&$content){}` `public function parseTagLib($tagLib, &$content, $hide = false){}` `public function parseAttr($str, $name = null){}` `public function parseVar(&$varStr){}` `public function parseVarFunction(&$varStr){}` `public function parseThinkVar(&$vars){}` (解析函数private??) > 3 private方法 模板文件名解析 `private function parseTemplateName($templateName){}` `private function parseTemplateFile($template){}` 模板编译 `private function compiler(&$content, $cacheFile){}` `private function checkCache($template, $cacheFile){}` `private function parseLiteral(&$content, $restore = false){}` `private function parseExtend(&$content){}` `private function parseLayout(&$content){}` `private function parseInclude(&$content){}` `private function parsePhp(&$content){}` `private function getIncludeTagLib(&$content){}` `private function parseBlock(&$content){}` `private function parseTag(&$content){}` 字符串替换 `private function stripPreg($str){}` `private function getRegex($tagName){}` ## 3 使用方法 TODO ## 4 总结 1 Controller.php到View.php 2 View.php到Template.php 3 Template.php到Think.php 4 Think.php到标签库Taglib