是否可以写入字符串或日志到控制台?

我的意思是

就像在JSP中一样,如果我们打印system.out.println("some")这样的东西,它将出现在控制台,而不是页面上。


当前回答

作为热门答案中链接网页的作者,我想添加我最后一个版本的这个简单的助手功能。它更坚固。

我使用json_encode()来检查变量类型是否不必要,并添加一个缓冲区来解决框架的问题。header()没有稳定的返回或者使用过多。

/**
 * Simple helper to debug to the console
 *
 * @param $data object, array, string $data
 * @param $context string  Optional a description.
 *
 * @return string
 */
function debug_to_console($data, $context = 'Debug in Console') {

    // Buffering to solve problems frameworks, like header() in this and not a solid return.
    ob_start();

    $output  = 'console.info(\'' . $context . ':\');';
    $output .= 'console.log(' . json_encode($data) . ');';
    $output  = sprintf('<script>%s</script>', $output);

    echo $output;
}

使用

// $data is the example variable, object; here an array.
$data = [ 'foo' => 'bar' ];
debug_to_console($data);`

结果截图

另外,一个简单的例子作为一个图像,更容易理解它:

其他回答

我发现这很有帮助:

function console($data, $priority, $debug)
{
    if ($priority <= $debug)
    {
        $output = '<script>console.log("' . str_repeat(" ", $priority-1) . (is_array($data) ? implode(",", $data) : $data) . '");</script>';

        echo $output;
    }
}

像这样使用它:

<?php
    $debug = 5; // All lower and equal priority logs will be displayed
    console('Important', 1 , $debug);
    console('Less Important', 2 , $debug);
    console('Even Less Important', 5 , $debug);
    console('Again Important', 1 , $debug);
?>

在控制台输出:

重要的 不那么重要 更不重要 同样重要的

您可以通过使用$debug值限制不太重要的日志来关闭它们。

还有一个伟大的谷歌Chrome扩展,PHP控制台,有一个PHP库,可以让你:

在Chrome JavaScript控制台和弹出的通知中看到错误和异常。 转储任何类型的变量。 远程执行PHP代码。 使用密码保护访问。 根据请求对控制台日志进行分组。 跳转到文本编辑器中的错误文件:行。 将错误/调试数据复制到剪贴板(用于测试人员)。

Use:

function console_log($data) {
    $bt = debug_backtrace();
    $caller = array_shift($bt);

    if (is_array($data))
        $dataPart = implode(',', $data);
    else
        $dataPart = $data;

    $toSplit = $caller['file'])) . ':' .
               $caller['line'] . ' => ' . $dataPart

    error_log(end(split('/', $toSplit));
}
$variable = "Variable";
echo "<script>console.log('$variable');</script>";

PHP和JavaScript交互。

一些很好的答案,增加了更多的深度;但我需要一些更简单、更像JavaScript console.log()命令的东西。

我在Ajax应用程序的许多“收集数据并将其转换为XML”中使用了PHP。JavaScript console.log在这种情况下不起作用;它中断XML输出。

Xdebug等也有类似的问题。

我在Windows上的解决方案:

设置一个易于获取和写入的.txt文件 在.ini文件中设置PHP error_log变量以写入该文件 在Windows文件资源管理器中打开该文件,并为其打开预览窗格 使用error_log('myTest');PHP命令发送消息

这个解决方案很简单,大部分时间都能满足我的需求。标准PHP,并且每次PHP写入预览窗格时,预览窗格都会自动更新。