为什么会打印2次?咨询下老师

来源:4-8 【Container容器类剖析】获取容器里面的实例分析

研究猿

2020-02-05

图片描述
图片描述

写回答

1回答

天经地义

2020-03-30

这个get的作用是获取容器中的对象实例,你在这里打exit,发现打印了两次123

第一个123是因为你入口文件index.php的最后一行“Container::get('app')->run()->send();”中的get('app'),然后因为前面的代码已经注册号很多服务了,报错错误处理,和错误写log,你在这里exit强制中止会触发错误写log,所以第二个123是“thinkphp/library/think/Error.php”的94行“Container::get('log')->save();”中的get('log')触发获取容器中log对象写日志,所以会打印两个,


//img1.sycdn.imooc.com/szimg/5e8199d90990c76e07070149.jpg你可以使用debug_backtrace()函数打印一些相关信息,就可以看到方法的调用来源之类的信息,如下//img.mukewang.com/szimg/5e819a4d093630c507530559.jpg

3
1
慕村5515322
很赞!
2021-07-15
共1条回复

BAT资深工程师解析Tp5+Tp6底层源码

一门课掌握主流Tp5+最新Tp6框架底层,拥抱新潮流

686 学习 · 145 问题

查看课程