请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

多应用模式下 controller/Error.php 讨论

问题一:

老师, 这章演示的
BaseController 下添加的 __call() 方法,
和 controller/Error.php 的 __call() 方法,
都是针对单应用模式吗?

问题二:

多应用模式下的报错被 app/api/exception/Http 接管, 是否就没有必要设置两个 __call() 方法了?

结论: 我测试下来, 屏蔽两个 __call(), 报错同样也能显示成 json 格式输出
4种情况如下,
    找不到 控制器 报错时
       (一) 进 api/controller/Error.php/__call() 方法,
       (二) 进 app/api/exception/Http ,
    找不到 方法 报错时
       (三) 进 BaseController/__call() 方法,
       (四) 进 app/api/exception/Http ,
第一种情况: 没有进 api/controller/Error.php/__call() 方法 , 直接进了 app/api/exception/Http, 和第二种情况结果一样.
第二种情况: 图片描述

第三种情况: 图片描述

第四种情况: 图片描述

问题三:

app/api/exception/Http 我改写如下, 目的是 .env 文件 app_debug=true 时, 显示更多信息的报错, 方便调试; false或上线后统一 json 输出
这样写是否合适?
图片描述

APP_DEBUG = true 时:
图片描述

正在回答

2回答

亲爱的同学您好,很赞,问题问的很细,说明您对于问题进行了多方位的思考,很棒

第一个问题:  他不是针对单应用模式下的, 多应用模式也是可以。 您需要在对应用的时候也可以加上 Error.php类库文件 以及 __call ,可以仿照老师之前讲解的来

第二个问题:  多应用模式下最好 也加上 __call这种处理

第三个问题: 您写的这个可以,没问题。很棒。

1 回复 有任何疑惑可以回复我~
  • 提问者 happy技师 #1
    我又继续提问了, 请老师帮忙看一下~
    回复 有任何疑惑可以回复我~ 2020-03-18 09:58:00
提问者 happy技师 2020-03-18 09:53:04

我知道为什么问题二 的第一种情况: 没有进 api/controller/Error.php/__call() 方法 , 直接进了 app/api/exception/Http

conf/route.php 配置如下

//img1.sycdn.imooc.com//szimg/5e717cbb09993cb708290636.jpg

我开启了路由器后缀, 然后顺手把 empty_controller = 'Error' 改成了 'ErrorController'

导致 /think/route/dispatch/Controller.php 文件中的 controller 方法 174行 判断错误

//img1.sycdn.imooc.com//szimg/5e717e630929fe9909900788.jpg

把 empty_controller 改回 'Error', 找不到 控制器 就能够进入 ErrorController.php 的 __call() 了.

问题四:  默认控制器名 default_controller 是否只需写 'Index' ?

问题五: 是否强制使用路由 url_route_must=true 时, 没有配置的路由都会提示 Route Not Found, __call() 又不起作用了, 是否还需要写?

0 回复 有任何疑惑可以回复我~
  • singwa #1
    您好,当前问题的第一, 你说的是对的。 但是 您这个控制器命名不符合规范哈。控制器文件名 别加controller,按TP的规范来。
    比如ErrorController.php   改下 Error.php
    
    问题四: 默认控制器你想写什么就是什么,不一定是index
    问题五: 如果强制url_route_must=true 时,没有配置路由的话会出现
     Route Not Found, __call() 是启不到作用, 可以不写,但是实际上工作中基本很少 设置 url_route_must=true 。这样有点那啥,哈哈哈哈哈
    回复 有任何疑惑可以回复我~ 2020-03-20 00:32:22
  • 提问者 happy技师 回复 singwa #2
    好的, 感谢~
    回复 有任何疑惑可以回复我~ 2020-03-20 00:39:10
  • singwa 回复 提问者 happy技师 #3
    客气了,祝您学习愉快
    回复 有任何疑惑可以回复我~ 2020-03-20 01:18:21
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信