thinkphp6.0------------视图类和日志类

一、使用

在控制器层,会调用视图类的方法,加载页面文件并传入数据信息等。视图类已在容器类中加载完成了。

二、相关类

Manager类:抽象类,相当于抽象工厂模式的抽象工厂类(View类和Log类都继承自它)

成员变量:

app:容器类

drivers:驱动类实例数组

namespace:驱动类所在的命名空间

成员方法:

构造函数:初始化变量app

driver:获取驱动类

(1)参数为空时,获取默认驱动类(getDefaultDriver方法)

(2)不为空时,根据键值在变量drivers数组中获取(getDriver方法)

getDriver:根据键值在变量drivers数组中获取,没有则调用createDriver方法创建并保存

resolveType:获取驱动类型

resolveConfig:获取驱动配置

resolveClass:获取驱动类,根据变量namespace和参数获取驱动类名

resolveParams:获取驱动类参数,从配置中获取(调用方法resolveConfig)

createDriver:创建驱动类实例

(1)根据参数获取驱动类型(resolveType方法)

(2)判断根据驱动类型组成的方法是否存在,存在则直接调用方法创建驱动类

(3)不存在在调用resolveClass方法获取驱动类名,并在容器类中注册驱动类

forgetDriver:移除驱动实例

getDefaultDriver:抽象方法,每个子类必须实现,获取默认方法

__call:魔术方法:没有对应的方法时,启动此方法:调用驱动类中对应的方法(相当于将驱动类的方法委托给了此类)

View类:继承于抽象类Manager

成员变量:

namespace:同父类,初始化了一个值\think\view\driver\

data:保存模板变量,需传递给模板的数据

filter:内容过滤,保存的是函数

成员方法:

engine:获取模板引擎,调用方法driver

assign:为变量data赋值

filter:设置变量filter的值,参数是函数类

fetch:委托驱动类的fetch方法(调用方法getContent)

display:委托驱动类的display方法(调用方法getContent)

getContent:获取内容,参数是函数类,执行参数对应的函数,回调变量filter对应的函数

resolveConfig:重写父类的resolveConfig方法

getDefaultDriver:默认驱动

附:

(1)驱动类

Php类:处理模板中的php代码

Think类:委托于Template类进行模板处理(这个需要根据官网文档进行安装)

(2)配置文件

config/view.php


日志相关类

日志类、日志驱动类、日志渠道类

Log类:日志类,继承于抽象类Manager,还有接口类LoggerInterface

9个常量表示日志类型,对应的处理方法分别用于保存对应的日志

namespace:驱动类的命名空间

成员方法:

getDefaultDriver:默认驱动

getConfig:获取日志配置(读取日志文件)

getChannelConfig:获取渠道配置

channel:跟driver方法功能相当,区别在于,参数可以为数组,返回的是ChannelSet类

createDriver:重写父类createDriver方法,

(1)调用父类createDriver方法创建驱动类

(2)创建日志渠道类并返回(驱动类作为了参数)

clear和close:清空日志,清除日志渠道类中的log变量

getLog:获取已经保存的日志信息

save:保存日志,对变量drivers数组的元素进行循环,分别调用元素的save方法

record:调用日志渠道类的record方法进行保存日志

write:实时写入日志,调用record方法(注意参数)

log:记录日志信息,调用record方法,参数lazy正好和write方法相反

listen:添加日志写入监听事件,触发这些事件是在保存日志时,调用日志渠道类的save方法

Channel类和ChannelSet类:日志渠道类,ChannelSet类相当于Channel类的集合

成员变量:

name:驱动类型

logger:驱动类

event:事件类

lazy:是否实时写入

log:保存日志信息,数组

close:关闭日志的状态

allow:允许写入的日志类型

成员方法

构造函数:初始化各个变量

close:关闭日志,调用clear方法并标记状态(close的值)

clear:清空日志,清空数组变量log的值

record:记录日志

(1)根据参数,生成需要记录的日志内容,并保存至变量log中

(2)根据参数和变量lazy值来判断是否实时保存日志(保存时调用save方法)

write:实时记录日志,调用record方法(注意参数lazy)

log:记录日志,调用record方法(注意参数lazy,跟write方法中的相反)

getLog:获取日志信息

save:保存日志

(1)先判断并处理监听的事件

(2)调用变量logger(日志驱动类)的方法save进行保存,成功则清除日志信息(clear方法)

日志驱动类:File类和Socket类,相当于两种日志驱动策略

File类是把日志保存至本地

Socket类是把日志发送给其他服务器进行处理

每个日志驱动类中需要有方法save,用于日志渠道类的调用

File类:

整个流程:

(1)生成日志文件的路径和文件名;

(2)处理日志信息,将一些特殊类型的转为字符串等;

(3)将日志信息写入到文件中

配置参数:

time_format :日期格式
        single:是否生成单日志文件(配置为字符串时可为文件名,默认是single)
        file_size:日志文件的大小不能超过此配置
        path:日志路径
        apart_level:配置哪些日志类型需要单独生成日志文件
        max_files:日志文件数不能超过此配置,超过时将会删除第一个日志文件
        json:是否将日志信息转为json格式
        json_options:生成json格式时的参数(json_encode的第二个参数)
        format:打印日志的格式

构造函数:初始化一些配置信息

save:日志写入接口

(1)调用getMasterLogFile方法,获取日志保存的路径名

(2)循环处理日志信息:第二层循环:先处理日志内容,不是字符串的转为字符串,判断是否需要转为json格式等,第一层循环:再根据日志信息的级别(类型)检测配置信息是否需要独立生成日志文件(调用getApartLevelFile方法生成路径名),是则直接调用write方法进入下个处理

(3)最后调用write方法写入日志

write:写入日志文件

(1)根据配置先检查日志文件的大小,如果超过配置,则将旧的日志文件重新命名(调用checkLogSize方法)

(2)将日志信息数据用换行链接起来,再调用php内置error_log函数写入日志信息

getMasterLogFile:生成日志文件路径字符串

getApartLevelFile:生成单独的日志文件路径

checkLogSize:调用函数rename对旧的日志文件重新命名

 

 

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值