web-dev-qa-db-fra.com

Comment écrire propre fonction DD () identique à laravel?

J'utilise laravel depuis longtemps. Actuellement, je travaille sur Wordpress. J'ai adoré utiliser la fonction DD() de laravel.

Mais dans wordpress, je ne peux que les utiliser,

   print_r(),
   var_dump(),
   var_export()....

Ce ne sont que des extensions complètes de array ou object .

Mais j'ai besoin du mécanisme expand and close de laravel pour manipuler un tableau et un objet.

J'utilise ce qui suit comme général jj besoin,

if (!function_exists('dd')) {
 function dd()
  {
      echo '<pre>';
      array_map(function($x) { var_dump($x); }, func_get_args());
      die;
   }
 }

Cela fonctionne bien, mais j'ai besoin d'une liste de style et organisée.

C'est possible ?

6

La variable dd de Laravel utilise le composant VarDump de symfony . Ensuite, vous aurez une fonction dump globalement disponible qui formate la sortie. La seule différence est qu’il ne mourra pas après le vidage; vous devrez le faire manuellement, mais dans la plupart des cas, ce n’est même pas ce que vous voudriez.

  1. Exécuter composer global require symfony/var-dumper (en supposant que vous avez composeur dans votre projet wordpress)
  2. Ajoutez auto_prepend_file = ${HOME}/.composer/vendor/autoload.php à votre fichier php.ini;
  3. Exécutez de temps en temps composer global update symfony/var-dumper pour obtenir les dernières corrections de bogues.

Voici la documentation du composant VarDumper. https://symfony.com/doc/current/components/var_dumper.html

Donc, votre fonction dd pourrait ressembler à ceci:

if (!function_exists('dd')) {
    function dd()
    {
        array_map(function($x) { 
            dump($x); 
        }, func_get_args());
        die;
    }
 }
9
Kaspars

J'ai mis à jour plus de fonctions et le dernier code de d fonctions ci-dessous dans fonctions de débogage package.

(La réponse ci-dessous date d'il y a environ 1 an.)

======================================

Voici mon propre code. Cela peut fonctionner en clair PHP (pas de framework).

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";
}
6
Ngoc Nam

Vous pouvez importer cet espace de noms dans votre classe use Illuminate\Support\Debug\Dumper;, puis l'utiliser pour vos variables comme ceci: 

(new Dumper)->dump($myVariable);
4
Bitclaw

La Laravel dd est en fait une excellente fonction. Cependant, le mécanisme en cours est var_dump et ensuite die.

Exemple:

$arr = [1,2,3,4,5,6];
var_dump($arr);
die();
4
Arun Code

Pour les autres personnes qui pourraient être intéressées par Laravel comme dd (), veuillez vérifier ce dépôt - 

https://github.com/wanfeiyy/laravel-dd

2
Rajitha Bandara

Je le fais comme ça:

function dd($a){
    var_dump($a);
    exit;
}

Je l'utilise tout le temps. Même créé un extrait pour cela dans Sublime.

J'utilise également l'extension var_masterpiece Chrome pour obtenir une sortie Nice, où je peux développer et réduire les clés de la matrice, etc.

1
Lucas Bustamante