Sen*_*dor 364
或者你使用从这个网站PHP Debug到控制台的技巧
首先,您需要一个小的PHP帮助函数
function debug_to_console($data) {
$output = $data;
if (is_array($output))
$output = implode(',', $output);
echo "<script>console.log('Debug Objects: " . $output . "' );</script>";
}
Run Code Online (Sandbox Code Playgroud)
然后你可以像这样使用它
debug_to_console("Test");
Run Code Online (Sandbox Code Playgroud)
这将创建一个这样的输出:
Debug Objects: Test
Run Code Online (Sandbox Code Playgroud)
Mal*_*chi 137
火狐
在Firefox上,您可以使用名为FirePHP的扩展,它可以将PHP应用程序中的信息记录和转储到控制台.这是令人敬畏的Web开发扩展Firebug的插件.
铬
但是,如果您使用Chrome,则会有一个名为Chrome Logger或webug的PHP调试工具(webug在日志顺序方面存在问题).
最近,Clockwork正在积极开发中,它通过添加一个新的面板来扩展Developer Tools,以提供有用的调试和分析信息.它为Laravel 4和Slim 2提供开箱即用的支持,并且可以通过其可扩展的API添加支持.
使用Xdebug
调试PHP的更好方法是通过Xdebug.大多数浏览器都提供帮助程序扩展,以帮助您传递所需的cookie /查询字符串以初始化调试过程.
Tra*_*vis 63
如果您正在寻找一种简单的方法,请回显为JSON:
<script>
console.log(<?= json_encode($foo); ?>);
</script>
Run Code Online (Sandbox Code Playgroud)
小智 35
试试这个工作:
echo("<script>console.log('PHP: " . $data . "');</script>");
Run Code Online (Sandbox Code Playgroud)
Neo*_*Neo 19
echo
"<div display='none'>
<script type='text/javascript'>
console.log('console log message');
</script>
</div>";
Run Code Online (Sandbox Code Playgroud)
创建一个
<div>
Run Code Online (Sandbox Code Playgroud)
随着
display="none"
Run Code Online (Sandbox Code Playgroud)
所以不显示div,而是显示
console.log()
Run Code Online (Sandbox Code Playgroud)
函数是在javascript中创建的.所以你在控制台中收到消息.
bue*_*tge 18
作为上面流行答案的链接网页的作者,我想添加这个简单帮助函数的最后一个版本,更加可靠.
我用来json_encode()检查不必要的var类型,并添加一个缓冲区来解决框架问题,没有可靠的返回或过度使用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;
}
Run Code Online (Sandbox Code Playgroud)
// $data is the example variable, object; here an array.
$data = [ 'foo' => 'bar' ];
debug_to_console($data);`
Run Code Online (Sandbox Code Playgroud)
另外一个简单的例子就像图像一样容易理解.
Pan*_*sht 16
我认为它可以用 -
function jsLogs($data) {
$html = "";
$coll;
if (is_array($data) || is_object($data)) {
$coll = json_encode($data);
} else {
$coll = $data;
}
$html = "<script>console.log('PHP: ${coll}');</script>";
echo($html);
# 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"]}
Run Code Online (Sandbox Code Playgroud)
Klo*_*ner 14
一些很好的答案可以增加更深度; 但我需要更简单的东西,更像JS console.log()命令.
我在AJAX应用程序中使用PHP进行了很多"收集数据并转换成xml".JS console.log在那种情况下不起作用; 它打破了xml输出.(也许有人有解决方案?)
Xdebug等有类似的问题.
我在Windows中的解决方案:
.txt易于访问和写入的文件error_log在.ini文件中设置PHP 变量以写入该文件error_log('myTest');PHP命令发送消息这个解决方案很简单,大多数时候都满足我的需求,标准的PHP,每次PHP写入时预览窗格都会自动更新.
zee*_*zee 11
我发现这有用:
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;
}
}
Run Code Online (Sandbox Code Playgroud)
并使用它像:
<?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);
?>
Run Code Online (Sandbox Code Playgroud)
控制台中的哪些输出:
Run Code Online (Sandbox Code Playgroud)Important Less Important Even Less Important Again Important
您可以通过使用$ debug值限制它们来关闭不太重要的日志
小智 11
$variable = "Variable";
echo "<script>console.log('$variable');</script>";
Run Code Online (Sandbox Code Playgroud)
PHP和Javascript交互.
function phpconsole($label='var', $x) {
?>
<script type="text/javascript">
console.log('<?php echo ($label)?>');
console.log('<?php echo json_encode($x)?>');
</script>
<?php
}
Run Code Online (Sandbox Code Playgroud)
小智 7
对于数组,字符串或对象而言,简单易行.
function console_log( $data ) {
$output = "<script>console.log( 'PHP debugger: ";
$output .= json_encode(print_r($data, true));
$output .= "' );</script>";
echo $output;
}
Run Code Online (Sandbox Code Playgroud)
如果要写入PHP日志文件而不是JavaScript控制台,可以使用以下命令:
error_log("This is logged only to the PHP log")
参考:http://php.net/manual/en/function.error-log.php
对于Chrome,有一个名为Chrome Logger的扩展程序,可以记录PHP消息.
Firefox DevTools甚至集成了对Chrome Logger协议的支持.
要启用日志记录,您只需要在项目中保存"ChromePhp.php"文件即可.然后它可以像这样使用:
include 'ChromePhp.php';
ChromePhp::log('Hello console!');
ChromePhp::log($_SERVER);
ChromePhp::warn('something went wrong!');
Run Code Online (Sandbox Code Playgroud)
从GitHub页面获取的示例.
输出可能如下所示:
这是我的解决方案,这个方案的好处是你可以传递任意数量的参数。
function console_log()
{
$js_code = 'console.log(' . json_encode(func_get_args(), JSON_HEX_TAG) .
');';
$js_code = '<script>' . $js_code . '</script>';
echo $js_code;
}
Run Code Online (Sandbox Code Playgroud)
这样称呼它
console_log('DEBUG>>', 'Param 1', 'Param 2');
console_log('Console DEBUG:', $someRealVar1, $someVar, $someArray, $someObj);
Run Code Online (Sandbox Code Playgroud)
现在您应该能够在控制台中看到输出,祝您编码愉快:)
| 归档时间: |
|
| 查看次数: |
1077567 次 |
| 最近记录: |