php stemplate::assign,另:(Template.php)模板解析

[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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值