服务提供者
博客:Laravel 中输出 SQL 语句的到 log 日志
为什么这个方法可以在执行数据库的时候的时候,可以自动执行boot里面的监听方法,register东西都可以不用谢,我看了些服务提供者的解释,感觉讲的都是一样的东西,感觉我都没有听懂,大佬可以解释一下吗???不怎么明白服务提供者者这边的作用
构造函数 :flushed:
你这个严格的来说,跟
服务提供者
没有关系,是事件的事情。(怎么说呢… 能看底层,可以解决一堆疑惑)
lal
所有数据库操作都是一个闭包,经过run()
,可以看到执行成功后, 会调用
logQuery()
->事件
很好理解呀,public 下面index.php 这个入口文件,代码是从上到下按顺序执行的,服务提供者在上面,就先执行它呀,具体可以看入口文件里面的方法哈,它被入口文件里面某个方法先调用了,所以写在里面的代码先调用呀,SQL在他后面所以后调用呀,类似的场景还有 config 下面的app.php文件,也是被先调用了哦,所以他们叫注册,用什么之前,先注册它,下载的很多composer包都说先注册,就是在config 下面的app.php中注册它。同理,注册中的文件也有先后顺序,也就是 config 下面的app.php里面注册的那些类也是有先后顺序的,上面的先执行,下面的后执行。
另外 有木有发现 config 下面的 app.php 与 AppServiceProvider 开头的三个字母很像呢,因为他们有联系呀,哈哈哈。另外再配上楼上讲的事件,事件就像个地雷,我埋着,平时你看不到我干啥,我把地雷埋在AppServiceProvider里面,说明我执行的优先级非常高,等你任何位置的sql出发LOG这个地雷的时候,我就炸,因为我执行的顺序很高,所以不管你的SQL在哪,我都炸,这样就不用管你写的SQL到底在哪,顺序在哪,反正肯定没我执行的顺序高,因为我比绝大多数代码执行的顺序都高,哈哈哈。PS:我闲着混点瞎几把说的,别当真。
blog.phpzendo.com/?p=358 你的意思可能是说为什么我写在boot里面就能执行了呢 答案就是laravel生命周期中就包括这个过程 具体的代码是怎么实现的 你就看上面的文章 会一步一步帮你分析代码的实现过程