全局安装
1
| $ composer global require symfony/var-dumper 2.7.*
|
加上固定版本号是因为如果本地低版本的 Laravel 项目(比如 Laravel 5.1),它里面依赖的版本是 2.7.*
,如果不指定版本会安装最新的 3.3.*
,由于在 Laravel 项目中:
1 2 3 4 5
| if (! function_exists('dd')) { function dd(){ ... } }
|
的缘故,导致使用全局定义的 dd function 。会出现不兼容报错的情况。
配置 php.ini
在 php.ini 中找到 auto_prepend_file
,然后写上你相对应的路径,比如我的路径:
1
| auto_prepend_file = "C:/Users/Administrator.N27NDU1NHONBOGF/AppData/Roaming/Composer/vendor/autoload.php"
|
更新 composer
1
| $ composer global update
|
这样一来就可以使用 dump()
了。不过还不够,我们还要把 dd()
的代码放进来。
准备 dd()
找个地方复制以下代码(我直接命名成 debugHelper.php
)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90
| <?php
use Symfony\Component\VarDumper\Cloner\VarCloner; use Symfony\Component\VarDumper\Dumper\CliDumper; use Symfony\Component\VarDumper\Dumper\HtmlDumper as SymfonyHtmlDumper;
class HtmlDumper extends SymfonyHtmlDumper {
protected $styles = [ 'default' => 'background-color:#fff; color:#222; line-height:1.2em; font-weight:normal; font:12px Monaco, Consolas, monospace; word-wrap: break-word; white-space: pre-wrap; position:relative; z-index:100000', 'num' => 'color:#a71d5d', 'const' => 'color:#795da3', 'str' => 'color:#df5000', 'cchr' => 'color:#222', 'note' => 'color:#a71d5d', 'ref' => 'color:#a0a0a0', 'public' => 'color:#795da3', 'protected' => 'color:#795da3', 'private' => 'color:#795da3', 'meta' => 'color:#b729d9', 'key' => 'color:#df5000', 'index' => 'color:#a71d5d', ]; }
class Dumper {
public function dump($value) { if (class_exists(CliDumper::class)) { $dumper = 'cli' === PHP_SAPI ? new CliDumper : new HtmlDumper; $dumper->dump((new VarCloner)->cloneVar($value)); } else { var_dump($value); } } }
if (! function_exists('dd')) {
function dd(...$args) { foreach ($args as $x) { (new Dumper)->dump($x); } die(1); } }
if (! function_exists('dda')) {
function dda(...$args) { foreach ($args as $x) { (new Dumper)->dump($x->toArray()); } die(1); } }
|
记下这个文件的路径,比如我的是:D:/composer/debugHelper.php
更改全局 composer.json
然后我们找到全局的 composer.json
所在的位置,通常在用户根目录下,在 autoload 中增加这个文件的路径:
1 2 3 4 5 6 7 8 9 10 11 12
| { .... "require": { ..... "symfony/var-dumper": "2.7.*" }, "autoload": { "files": [ "D:/composer/debugHelper.php" ] } }
|
最后更新一下,就可以 dd 用起来了!
1
| $ composer global dump-autoload
|