我使用laravel很长一段时间,但目前我使用wordpress。我喜欢使用laravel的DD()
功能。
但在wordpress中,我只能使用这些,
print_r(),
var_dump(),
var_export()....
这些都只是扩展整个数组或对象。
但我需要laravel的扩展和关闭机制来处理数组和对象。
我使用以下作为一般dd需要,
if (!function_exists('dd')) {
function dd()
{
echo '<pre>';
array_map(function($x) { var_dump($x); }, func_get_args());
die;
}
}
它运作良好,但我需要一种风格化和有组织的列表形式。
可能吗 ?
Laravel的dd
使用symfony的VarDump component。然后你将有一个全局可用的dump
函数,它格式化输出。唯一的区别是它在转储后不会“死”,你必须手动完成 - 但在大多数情况下甚至不是你想要的东西。
composer global require symfony/var-dumper
(假设你的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
包中更新了debug functions函数的更多函数和最新代码。
(以下答案大约是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";
}
Laravel dd
实际上是一个很棒的功能。然而,正在进行的机制是var_dump
然后die
。
例:
$arr = [1,2,3,4,5,6];
var_dump($arr);
die();
您可以在类use Illuminate\Support\Debug\Dumper;
中引入此命名空间,然后将其用于您的变量,如下所示:
(new Dumper)->dump($myVariable);
对于其他可能对Laravel感兴趣的人,比如dd(),请查看此回购 -
我是这样做的:
function dd($a){
var_dump($a);
exit;
}
我用它所有的时间。甚至在Sublime中为它创建了一个Snippet。
我还使用var_masterpiece Chrome扩展来获得一个不错的输出,我可以扩展和折叠数组键等。