Laravel 5.7 新特性之引入 Laravel Dump Server 扩展包方便本地开发代码调试
在 Laracon US 2018 大会上 Taylor Otwell 宣布会在 Laravel 5.7 中引入 Laravel Dump Server 扩展包(该扩展包将 Symfony 的 Var-Dump Server 引入 Laravel,用于在开发环境收集 dump()
函数输出,并将其打印到控制台或导出到文件),作为开发环境依赖放到 composer.json
文件的 require-dev
配置项中:
"require-dev": {
"beyondcode/laravel-dump-server": "~1.0",
"filp/whoops": "^2.0",
"fzaninotto/faker": "^1.4",
"mockery/mockery": "^1.0",
"nunomaduro/collision": "^2.0",
"phpunit/phpunit": "^7.0"
},
这样,你就可以在 Laravel 5.7 应用中开箱使用以下 Artisan 命令将打印数据输出到控制台或者 HTML 文件,而不必打开浏览器:
php artisan dump-server
# Or send the output to an HTML file
php artisan dump-server --format=html > dump.html
以上命令会在后台启动 Web 服务器,并监听 dump()
函数,然后将输出发送到控制台/导出到文件。如果没有在控制台运行上述命令,那么 dump()
函数还是按照默认的方式执行,不会受到影响。
Laravel 会持续将一些有用的第三方扩展包引入官方发行版本,例如在 Laravel 5.6 中引入了 nunomaduro/collision,在 Laravel 5.5 中引入了 fideloper/proxy。
如果你想在 Laravel 5.6 及以下版本中使用 Laravel Dump Server,需要通过 Composer 安装这个扩展包:
composer require --dev beyondcode/laravel-dump-server
如果希望对其进行自定义配置,可以将其配置文件发布到 config
目录下:
php artisan vendor:publish --provider=BeyondCode\\DumpServer\\DumpServerServiceProvider
该命令会在 config
下新增一个 debug-server.php
配置文件。你可以在该配置文件中配置想要监听的服务器 IP 及端口号,如果是通过 Laradock 作为本地开发环境,需要将 IP 地址替换为 workspace 的容器名方可正常使用。
该扩展包的使用也非常简单,我们在应用的 routes/api.php
文件中定义一个 API 路由:
Route::get('/test', function (Request $request) {
dump($request->all());
return [
'name' => $request->get('name') ? : '学院君',
'site' => $request->get('site') ? : 'Laravel学院',
];
});
如果没有启用 php artisan dump-server
命令,访问 http://dump-server.test/api/test?name=学院君&site=Laravel学院
的话页面显示如下:
下面在项目根目录下运行该命令,再次访问上面的 URL 链接,会看到 dump()
输出打印到了控制台:
同时浏览器中也不再显示 dump()
输出,而是将返回数组以 JSON 格式输出:
通过该扩展包,我们可以在任意想要调试代码的地方调用 dump()
函数打印数据,而不会影响原本的代码执行,从而极大提高本地开发调试效率。
2 Comments
5.7版本 因看到该文章的描述https://learnku.com/articles/23928,所以按照其方式进行composer安装,因beyondcode/laravel-dump-server包是安装在dev下的,所以在正式环境中不会去安装,导致线上报错类找不到,代码中未发现使用dump()函数
线上报错记日志 设置报警就好了 没必要这么做了 这个就是方便本地调试的