dd()はdump and dieの略です。何をやるかというとLaravel用の便利なvar_dump();exit;です。
dd()の使い方はシンプル。Laravelフレームワークのphpコード内で次の様に記述するのみです。
dd(変数名A,変数名B,..)
これを実行した場合、次の図の様に渡した変数を読みやすい形で表示するhtmlコードが返されます。
特に便利なのは図にあるquery builderの様な巨大な構造体を読みたい時です。通常のvar_dump()で表示しようとした場合、とても読めたものではありません。var_dumpでは常に全展開の為、長いkeyと深いネストを持ってしまった場合、表示すら難しいです。
dd()の定義はvendor/laravel/framework/src/Illuminate/Support/helpers.phpにあります。
/** * Dump the passed variables and end the script. * * @param mixed $args * @return void */ function dd(...$args) { foreach ($args as $x) { (new Dumper)->dump($x); } die(1); }
dieはexitと同じなので読み飛ばしです。Dumperの中を追うとvendor/laravel/framework/src/Illuminate/Support/Debug/Dumper.phpを読むことになります。
use Symfony\Component\VarDumper\Cloner\VarCloner; use Symfony\Component\VarDumper\Dumper\CliDumper; class Dumper { /** * Dump a value with elegance. * * @param mixed $value * @return void */ public function dump($value) { if (class_exists(CliDumper::class)) { $dumper = in_array(PHP_SAPI, ['cli', 'phpdbg']) ? new CliDumper : new HtmlDumper; $dumper->dump((new VarCloner)->cloneVar($value)); } else { var_dump($value); } } }
ここでSymfonyのvar_dumperに渡してLaravel自身のコードは終わります。Symfonyのvar_dumperの中は満足いくeleganceな表示を行うためにいくらか大きな処理をしています。CliDumper.phpだけで600行程、htmlDumperは900行程で記事に書き起こす程読み込む気力はありませんでした。