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

我的意思是

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


当前回答

或者使用从PHP调试到控制台的技巧。

首先需要一个PHP辅助函数

function debug_to_console($data) {
    $output = $data;
    if (is_array($output))
        $output = implode(',', $output);

    echo "<script>console.log('Debug Objects: " . $output . "' );</script>";
}

然后你可以这样使用它:

debug_to_console("Test");

这将创建如下输出:

Debug Objects: Test

其他回答

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

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

Xdebug等也有类似的问题。

我在Windows上的解决方案:

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

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

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

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

我认为它可以被用来

function jsLogs($data, $isExit) {
    $html = "";
    $coll;

    if (is_array($data) || is_object($data)) {
        $coll = json_encode($data);
    } else {
        $coll = $data;
    }

    $html = "<script id='jsLogs'>console.log('PHP: ${coll}');</script>";

    echo($html);

    if ($isExit) exit();
}

# For String
jsLogs("Testing string"); #PHP: Testing string

# For Array
jsLogs(array("test1", "test2")); # PHP: ["test1","test2"]

# For Object
jsLogs(array("test1"=>array("subtest1", "subtest2"))); #PHP: {"test1":["subtest1","subtest2"]}

我已经放弃了上述所有工具,转而使用调试器和记录器。我怎么称赞都不为过!

只需点击右上角的一个标签,或者点击“点击这里”来展开/隐藏。

注意不同的“类别”。您可以单击任意数组展开/折叠它。

从网页

主要特点: 显示全局变量($ globals, $_POST, $_GET, $_COOKIE等) 显示PHP版本和加载的扩展 替换PHP内置的错误处理程序 记录SQL查询 监视代码和SQL查询的执行时间 检查变量的变化 函数调用跟踪 代码覆盖分析,检查执行了哪些脚本行 转储所有类型的变量 文件检查器与代码高亮显示查看源代码 发送消息到JavaScript控制台(仅限Chrome),用于Ajax脚本

试试下面的方法。它正在工作:

echo("<script>console.log('PHP: " . $data . "');</script>");