服务提供者

博客:Laravel 中输出 SQL 语句的到 log 日志

为什么这个方法可以在执行数据库的时候的时候,可以自动执行boot里面的监听方法,register东西都可以不用谢,我看了些服务提供者的解释,感觉讲的都是一样的东西,感觉我都没有听懂,大佬可以解释一下吗???不怎么明白服务提供者者这边的作用

《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
讨论数量: 4

构造函数 :flushed:

4年前 评论
ytoz (楼主) 4年前

你这个严格的来说,跟 服务提供者 没有关系,是事件的事情。

(怎么说呢… 能看底层,可以解决一堆疑惑)

lal 所有数据库操作都是一个闭包,经过 run(),

file
Laravel

可以看到执行成功后, 会调用logQuery() -> 事件

Laravel

file

4年前 评论

很好理解呀,public 下面index.php 这个入口文件,代码是从上到下按顺序执行的,服务提供者在上面,就先执行它呀,具体可以看入口文件里面的方法哈,它被入口文件里面某个方法先调用了,所以写在里面的代码先调用呀,SQL在他后面所以后调用呀,类似的场景还有 config 下面的app.php文件,也是被先调用了哦,所以他们叫注册,用什么之前,先注册它,下载的很多composer包都说先注册,就是在config 下面的app.php中注册它。同理,注册中的文件也有先后顺序,也就是 config 下面的app.php里面注册的那些类也是有先后顺序的,上面的先执行,下面的后执行。
另外 有木有发现 config 下面的 app.php 与 AppServiceProvider 开头的三个字母很像呢,因为他们有联系呀,哈哈哈。另外再配上楼上讲的事件,事件就像个地雷,我埋着,平时你看不到我干啥,我把地雷埋在AppServiceProvider里面,说明我执行的优先级非常高,等你任何位置的sql出发LOG这个地雷的时候,我就炸,因为我执行的顺序很高,所以不管你的SQL在哪,我都炸,这样就不用管你写的SQL到底在哪,顺序在哪,反正肯定没我执行的顺序高,因为我比绝大多数代码执行的顺序都高,哈哈哈。PS:我闲着混点瞎几把说的,别当真。

4年前 评论
guoke0826 4年前

blog.phpzendo.com/?p=358 你的意思可能是说为什么我写在boot里面就能执行了呢 答案就是laravel生命周期中就包括这个过程 具体的代码是怎么实现的 你就看上面的文章 会一步一步帮你分析代码的实现过程

4年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!