情景:已上线的项目突然出现了一点小问题,但你又看不出原因,怎么办呢,也不能直接输出终止程序运行逐步排错,在这里给你推荐一些方法:
方法1:
通过浏览器控制台输出接口
/**
* 控制台输出 可以把这个代码放在公共文件,可以在任意地方调用
* @param $var
* @param string $level
*/
function console($var,$level = 'debug')
{
if(is_array($var) || is_object($var)){
if (is_array($var)){//兼容 Yii2.0 查詢表 数组对象的方式 开始
$yii_arr = [];
foreach ($var as $key => $value ){
if (is_object($value)){
$new_value = $value->toArray();
$yii_arr[] = $new_value;
}
}
}
if ($yii_arr){
$var = $yii_arr;
}//兼容 Yii2.0 查詢表 数组对象的方式 结束
$output = json_encode($var,JSON_UNESCAPED_UNICODE);
$jsonDecode = json_decode($output,true);
if(empty((array)$jsonDecode) && !empty($var)){
echo "<script>console.{$level}('不支持输出')</script>";
return;
}
}elseif(is_string($var)){
$output = '"'.$var.'"';
}else{
$output = $var;
}
echo "<script>console.{$level}({$output})</script>";
return;
}
把这段代码放到你的文件中,要打印什么,就可以了
console($arr);
案例:
console(6)
谷歌浏览器展示,其他浏览器可能看控制台的方式有些查询
结果:
方法2:
做log日志
函数:file_put_contents
语法
int file_put_contents ( string $filename , mixed $data [, int $flags = 0 [, resource $context ]] )
参数 | 描述 |
---|---|
file | 必需。规定要写入数据的文件。如果文件不存在,则创建一个新文件。 |
data | 必需。规定要写入文件的数据。可以是字符串、数组或数据流。 |
mode | 可选。规定如何打开/写入文件。可能的值:
|
context | 可选。规定文件句柄的环境。context 是一套可以修改流的行为的选项。 |
$any_value 任意类型的值
file_put_contents("log-01.txt", print_r($any_value,1).PHP_EOL, FILE_APPEND);
方法3:
debug 变量,可以自定义
在 URL 传递一个参数比如 debug=1 或者直接识别用户来判断是否进入调试模式,也可以把异常信息打印到日志里面 或者 直接打印当前面页面也行。
方式1,相对直白,结果直接能在浏览器上面展示,但是可能会存在某些无知数据类型情况没值输出,数据安全低
方式2,任意类型的值都能打印出来,是日志的结果只能在服务器上面文件里面看到结果。查看结果比较麻烦些,数据安全高。
方式3 操作简单。但是数据会再当前的页面的展示出来