私はlaravel=を長い間使用していましたが、現在はwordpressを使用しています。laravelのDD()
関数を使用するのが大好きです。しかし、wordpress Iこれらしか使用できません
print_r(),
var_dump(),
var_export()....
これらはすべてarrayまたはobject全体を展開するだけです。しかし、配列とオブジェクトを処理するためのlaravelのexpandおよびcloseメカニズムが必要です。一般的なものとして次を使用しますdd need、
if (!function_exists('dd')) {
function dd()
{
echo '<pre>';
array_map(function($x) {var_dump($x);}, func_get_args());
die;
}
}
うまく機能しますが、スタイルを整えて整理した形式のリストが必要です。
出来ますか ?
Laravelのdd
はsymfonyの VarDumpコンポーネント を使用します。次に、出力をフォーマットするグローバルに利用可能なdump
関数があります。唯一の違いは、ダンプ後に「死ぬ」ことはないということです。手動でそれを行う必要がありますが、ほとんどの場合、それは望みのものではありません。
composer global require symfony/var-dumper
を実行します(composerプロジェクトにwordpressがあると仮定します)auto_prepend_file = ${HOME}/.composer/vendor/autoload.php
をphp.iniファイルに追加します。composer global update symfony/var-dumper
を実行して最新のバグ修正を行ってください。VarDumperコンポーネントのドキュメントは次のとおりです。 https://symfony.com/doc/current/components/var_dumper.html
したがって、dd
関数は次のようになります。
if (!function_exists('dd')) {
function dd()
{
array_map(function($x) {
dump($x);
}, func_get_args());
die;
}
}
デバッグ関数 パッケージで、以下のd
関数の関数と最新のコードを更新しました。
(以下の回答は約1年前です。)
======================================
以下は私のコードです。プレーンPHP(フレームワークなし)で動作します。
function d($data){
if(is_null($data)){
$str = "<i>NULL</i>";
}elseif($data == ""){
$str = "<i>Empty</i>";
}elseif(is_array($data)){
if(count($data) == 0){
$str = "<i>Empty array.</i>";
}else{
$str = "<table style=\"border-bottom:0px solid #000;\" cellpadding=\"0\" cellspacing=\"0\">";
foreach ($data as $key => $value) {
$str .= "<tr><td style=\"background-color:#008B8B; color:#FFF;border:1px solid #000;\">" . $key . "</td><td style=\"border:1px solid #000;\">" . d($value) . "</td></tr>";
}
$str .= "</table>";
}
}elseif(is_resource($data)){
while($arr = mysql_fetch_array($data)){
$data_array[] = $arr;
}
$str = d($data_array);
}elseif(is_object($data)){
$str = d(get_object_vars($data));
}elseif(is_bool($data)){
$str = "<i>" . ($data ? "True" : "False") . "</i>";
}else{
$str = $data;
$str = preg_replace("/\n/", "<br>\n", $str);
}
return $str;
}
function dnl($data){
echo d($data) . "<br>\n";
}
function dd($data){
echo dnl($data);
exit;
}
function ddt($message = ""){
echo "[" . date("Y/m/d H:i:s") . "]" . $message . "<br>\n";
}
この名前空間をクラスに取り込むことができますuse Illuminate\Support\Debug\Dumper;
そして、次のように変数に使用します。
(new Dumper)->dump($myVariable);
Laravel dd
は実際には素晴らしい機能です。しかし、受けているメカニズムはvar_dump
、次にdie
。
例:
$arr = [1,2,3,4,5,6];
var_dump($arr);
die();
Laravel dd()など)
私はこのようにします:
function dd($a){
var_dump($a);
exit;
}
いつも使っています。 Sublimeでスニペットを作成しました。
var_masterpiece Chrome拡張機能を使用して、配列キーなどを展開したり折りたたんだりできる素敵な出力を取得します。
私はこれが好きです:
function dd($var){
echo "<pre>";
print_r($var);
exit;
}