发布于2021-03-14 05:55 阅读(802) 评论(0) 点赞(17) 收藏(5)
什么是服务容器
简而言之,Laravel 服务容器 是一个用于存储绑定组件的盒子,它还会为应用提供所需的服务。
Laravel 服务容器是用于管理类的依赖和执行依赖注入的工具,By Laravel 文档。
什么是服务提供者
如果说服务容器是提供绑定和依赖注入的的工具,那么 服务提供者 则是实现绑定的工具。
php artisan make:provider SqlDebugServiceProvider
# Explanation:
# SqlDebugServiceProvider 自定义服务提供者的名字
<?php
namespace App\Providers;
use Illuminate\Support\ServiceProvider;
class SqlDebugServiceProvider extends ServiceProvider
{
/**
* Register services.
* register 方法用于执行服务绑定处理
*
* @return void
*/
public function register()
{
//
}
/**
* Bootstrap services.
* 可以使用所有已绑定的服务
*
* @return void
*/
public function boot()
{
//
}
}
为了完成注册服务提供者的功能,仅需要将类名加入到 config/app.php 配置文件的 providers 节点。
'providers' => [
/*
* Application Service Providers...
*/
App\Providers\AppServiceProvider::class,
App\Providers\AuthServiceProvider::class,
// App\Providers\BroadcastServiceProvider::class,
App\Providers\EventServiceProvider::class,
App\Providers\RouteServiceProvider::class,
/**
* SQL 监听服务
*/
App\Providers\SqlDebugServiceProvider::class,
],
\DB::listen(function ($query) {
$tmp = str_replace('?', '"' . '%s' . '"', $query->sql);
$qBindings = [];
foreach ($query->bindings as $key => $value) {
if (is_numeric($key)) {
$qBindings[] = $value;
} else {
$tmp = str_replace(':' . $key, '"' . $value . '"', $tmp);
}
}
$tmp = vsprintf($tmp, $qBindings);
$tmp = str_replace("\\", "", $tmp);
\Log::debug('[execution time: ' . $query->time . 'ms] ' . $tmp);
});
作者:sdjsdh
链接:http://www.phpheidong.com/blog/article/3265/c85f16156213819121fc/
来源:php黑洞网
任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任
昵称:
评论内容:(最多支持255个字符)
---无人问津也好,技不如人也罢,你都要试着安静下来,去做自己该做的事,而不是让内心的烦躁、焦虑,坏掉你本来就不多的热情和定力
Copyright © 2018-2021 php黑洞网 All Rights Reserved 版权所有,并保留所有权利。 京ICP备18063182号-4
投诉与举报,广告合作请联系vgs_info@163.com或QQ3083709327
免责声明:网站文章均由用户上传,仅供读者学习交流使用,禁止用做商业用途。若文章涉及色情,反动,侵权等违法信息,请向我们举报,一经核实我们会立即删除!