mumudontcry 发表于 2017-2-14 16:01:43

【php包教不包会系列3】一些调试的技巧

本帖最后由 mumudontcry 于 2017-3-9 00:51 编辑

一些调试的技巧上一讲似乎有一些小伙伴看得晕晕乎乎的,总的来说是排版问题,所以,就没有人去试着操作一下嘛?-、-这一讲我们说一说一些关于调试的技巧在出现了一些不懂的函数,建议可以一边查看php手册,一边继续看这讲的内容为什么在基础知识之前?也许你会问,我连php的变量是什么都不知道!我还怎么调试?为什么不先讲基础知识?因为基础知识很多地方都可以找得到,如果你真的急需知道,那么请开启传送门(http://www.runoob.com/php/php-tutorial.html),找到你想要了解的章节,不过我的建议是,在继续下面内容时再查阅,养成查询手册的习惯另外一个原因是,下面一些介绍的方法对后面的学习其实是很有帮助的,多打印你就知道程序的原理,而不是糊里糊涂(居然跑起来了!)echo
[*]只能输出字符串或者数字
[*]如果有多个变量需要输出,可以用逗号连接,echo是语法结构不是函数$var = 'string';
echo 1, 'hello', '123', $var;
[*]echo不会终止程序,因此,你可以一直echo下去
die、exit
[*]可带一个参数,如果参数是字符串,在退出之前会打印出来
[*]如果参数是数字,会被作为退出的状态码,不会被打印输出,范围在0~255之前,不应使用被PHP保留的状态码255,0用于成功中止程序,因此,不建议在它们里面打印数字,而是用组合echo的方式代替,如echo 'abc';die;
代替
die('abc');
[*]die和exit没有任何区别,都是终止程序执行
var_dump、print_r、var_export
[*]可以打印数组等结构,比echo和die(exit)稍微强大一点
[*]通过下面的例子可以看出三者区别(注意需要php5.4以上,包括5.4,因为数组的中括号写法是5.4和5.4之后才有的)
$var = ;
var_dump( $var );
print_r( $var );
var_export( $var );得到的结果分别是
array(2) {
    =>int(1)
    =>string(3) "abc"
}
Array(
    => 1
    => abc
)
array (
0 => 1,
1 => 'abc',
)其中,var_export函数还接收第二个参数,当值为true时,不是直接输出,而是返回,你可以用变量保存起来,而且var_export得到的结果是一段可执行的代码,所以你看到的第三组的array的格式的数组就是数组最初的定义
file_put_contents
[*]把内容输出到文件,第一个参数是输出的文件路径(包含文件名),第二个是变量的值,只能是字符串或者数字,因此建议使用如下语句,你可以把这个当作代码片段到处使用:file_put_contents( 'test.txt', var_export( $var, true ) );
[*]这里无法使用var_dump等其他函数,因为你需要把数据返回给变量赋值给第二个参数
xdebug调试
[*]这个在上一讲已经说过,这里再提一下,建议使用phpstudy,如果感兴趣自己配置xdebug的,可以直接找我,或者看需求多不多
[*]打开phpstudy,其他选项菜单,php扩展及设置,php扩展,勾选Xdebug
[*]打开netbeans,创建项目,使用存在的php源代码创建,项目url指向你的根目录,索引文件指向你待调试的文件,建议设置为index.php,因为后面在做大项目的时候,一般框架都是单入口(简单说就是全部都从index.php开始)的,所以这里索引文件一般都是index.php
[*]在对应的变量上打上断点,点击调试,此时浏览器弹出,断点被卡住,鼠标移动到变量上就可以看到相应的值,在窗口,调试,变量里可以打开详细的面板查看当前页面出现的所有变量的值
[*]记得在调试完成之后,关闭调试,如果不调试,请去掉Xdebug勾选,因为Xdebug特别影响性能,同时记得线上运营代码绝对不能开启Xdebug,否则配置不当,服务器的日志会爆炸!(一天产生100G你怕不怕?)
其他其实还有我自己总结的其他一些调试经验,只不过在基础没有讲之前,实在是不合适,以后会慢慢再说明,可以透露其中一个留给你们思考:上面说了,file_put_contents可以把变量的值打印到文件里查看,与之对应的,还有一个file_get_contents,这个函数接收一个文件路径做参数,用来获取文件的内容,噔噔噔~~其实,这个函数也可以用来打印变量的值,而且比file_put_contents更加强大,有没有想得出来的?
非小白的小伙伴的作业:如何用file_get_contents调试代码(保存变量的值)?
下一讲:php基础
顺便说一句,这一次的排版我用的是markdown生成的样式,记得不懂问度娘
#################### 华丽的 PHP 版分割线 ####################


如果喜欢木木的讲解,就点击下方的订阅(读作:打赏),给木木点个赞吧,欢迎大家提出建议或者指正

一块钱买不了皮肤,买不了香烟,却可以跟着木木一起打怪升级,并给木木巨大的支持,有了大家的力量,木木就可以制造元气弹,打败……嗯,买一个好一点的女朋友啦

hldh214 发表于 2017-2-15 10:14:45

{:10_288:}真的很棒, 加油

mumudontcry 发表于 2017-2-15 11:05:48

hldh214 发表于 2017-2-15 10:14
真的很棒, 加油

{:5_91:}厉害了~~

mumudontcry 发表于 2017-2-15 11:07:10

hldh214 发表于 2017-2-15 10:14
真的很棒, 加油

可以的话,思考一下作业题哦~~可以翻手册,然后脑洞一下

mumudontcry 发表于 2017-2-16 15:21:15

{:5_100:}没人?

1249333788 发表于 2017-2-27 17:48:18

棒棒哒

吃猴子的小香蕉 发表于 2017-3-23 09:51:39

学习中,加油{:10_275:}
页: [1]
查看完整版本: 【php包教不包会系列3】一些调试的技巧