在调试web网站的时候,可以用var_dump()
和 print_r()
输出数据来进行程序的简单调试。
dump()
函数是thinkphp
自定义的调试输出函数
var_dump()
是PHP
自带的调试输出函数,此函数显示关于一个或多个表达式的结构信息,包括表达式的类型与值。数组将递归展开值,通过缩进显示其结构。
pirnt_r()
是PHP
自带的输出函数,显示关于一个变量的易于理解的信息。如果给出的是 string
、integer
或 float
,将打印变量值本身。如果给出的是 array
,将会按照一定格式显示键和元素
简单封装下var_dump()
输出信息
function p($var){
echo '<pre>';
echo var_dump($var);
echo '<pre>';
}
pirnt_r($var)
更多用于调试输出数组信息
function p($var){
echo '<pre>';
echo pirnt_r($var);
echo '<pre>';
}
在调试前后端分离的程序的时候,PHP
版本<=5.6(PHP
版本>=7.0,可以使用composer
加载个日写本地日志的包就可以调试输出程序),调试后端程序会感到相当吃力,不知道如何输出调试变量等信息,解决方法的核心思想也是写本地文件,输出日志型信息,笨人笨办法,我相信有更好的调试方法,高端玩法待学会后再记录吧。下面提供三种输出到文件的方式:
//输出变量或数组到文件
//Tips:Linux注意目录和文件要有写权限
//chmod 775 -R ./ # 前方命令是Linux中递归更能改当前目录及子目录读写权限
$fp = fopen('./a.txt', 'a+b');
fwrite($fp, print_r($content, true));
fclose($fp);
//打印单个变量到文件
error_log($file, 3, "/tmp/php_3.log");
//输出对象到文件
file_put_contents("/tmp/qujun_php2.log", var_export($objects,true), FILE_APPEND);
file_put_contents("/tmp/qujun_php2.log", json_encode($objects), FILE_APPEND); //把对象换成json格式
file_put_contents("../ttt.log", var_export($data,true), FILE_APPEND);
file_put_contents("../ttt.log", json_encode($data,true), FILE_APPEND); //把对象换成json格式
//输出内容换行
file_put_contents("../ttt.log", $data.PHP_EOL, FILE_APPEND);
很多时候记录日志需要换行。
不建议使用
\r\n
因为:在windows
中\r\n
是换行
在Mac
中\r
是换行
在Liunx
中\n
是换行
但是PHP
提供了一个常量来匹配不同的操作系统,即:PHP_EOL
Linux中查看日志文件可以使用tail命令
# 当日志qujun_php2.log内容更新时,内容输出到控制台
tail -f /tmp/qujun_php2.log
参考 :
http://blog.51cto.com/qujunorz/1940787
http://php.net/docs.php
http://php.net/manual/zh/function.var-dump.php
http://php.net/manual/zh/function.print-r.php
https://blog.csdn.net/wlzx120/article/details/53781813