鱼C论坛

 找回密码
 立即注册
查看: 3774|回复: 6

[技术交流] 【php包教不包会系列3】一些调试的技巧

[复制链接]
发表于 2017-2-14 16:01:43 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

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

一些调试的技巧
上一讲似乎有一些小伙伴看得晕晕乎乎的,总的来说是排版问题,所以,就没有人去试着操作一下嘛?-、-
这一讲我们说一说一些关于调试的技巧
在出现了一些不懂的函数,建议可以一边查看php手册,一边继续看这讲的内容
为什么在基础知识之前?
也许你会问,我连php的变量是什么都不知道!我还怎么调试?为什么不先讲基础知识?
因为基础知识很多地方都可以找得到,如果你真的急需知道,那么请开启传送门(http://www.runoob.com/php/php-tutorial.html),找到你想要了解的章节,不过我的建议是,在继续下面内容时再查阅,养成查询手册的习惯
另外一个原因是,下面一些介绍的方法对后面的学习其实是很有帮助的,多打印你就知道程序的原理,而不是糊里糊涂(居然跑起来了!)
echo
  • 只能输出字符串或者数字
  • 如果有多个变量需要输出,可以用逗号连接,echo是语法结构不是函数
    1. $var = 'string';
    2. echo 1, 'hello', '123', $var;
    复制代码

  • echo不会终止程序,因此,你可以一直echo下去

die、exit
  • 可带一个参数,如果参数是字符串,在退出之前会打印出来
  • 如果参数是数字,会被作为退出的状态码,不会被打印输出,范围在0~255之前,不应使用被PHP保留的状态码255,0用于成功中止程序,因此,不建议在它们里面打印数字,而是用组合echo的方式代替,如
    1. echo 'abc';die;
    2. 代替
    3. die('abc');
    复制代码

  • die和exit没有任何区别,都是终止程序执行

var_dump、print_r、var_export
  • 可以打印数组等结构,比echo和die(exit)稍微强大一点
  • 通过下面的例子可以看出三者区别(注意需要php5.4以上,包括5.4,因为数组的中括号写法是5.4和5.4之后才有的)

    1. $var = [1, 'abc' ];
    2. var_dump( $var );
    3. print_r( $var );
    4. var_export( $var );
    复制代码
    得到的结果分别是
    1. array(2) {  
    2.     [0] =>  int(1)  
    3.     [1] =>  string(3) "abc"
    4. }
    5. Array(
    6.     [0] => 1
    7.     [1] => abc
    8. )
    9. array (
    10.   0 => 1,
    11.   1 => 'abc',
    12. )
    复制代码
    其中,var_export函数还接收第二个参数,当值为true时,不是直接输出,而是返回,你可以用变量保存起来,而且var_export得到的结果是一段可执行的代码,所以你看到的第三组的array的格式的数组就是数组最初的定义

file_put_contents
  • 把内容输出到文件,第一个参数是输出的文件路径(包含文件名),第二个是变量的值,只能是字符串或者数字,因此建议使用如下语句,你可以把这个当作代码片段到处使用:
    1. 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 版分割线 ####################


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

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

评分

参与人数 1荣誉 +20 鱼币 +20 贡献 +10 收起 理由
hldh214 + 20 + 20 + 10 分全给你了

查看全部评分

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-2-15 10:14:45 | 显示全部楼层
真的很棒, 加油
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-2-15 11:05:48 | 显示全部楼层

厉害了~~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-2-15 11:07:10 | 显示全部楼层

可以的话,思考一下作业题哦~~可以翻手册,然后脑洞一下
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-2-16 15:21:15 | 显示全部楼层
没人?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-2-27 17:48:18 | 显示全部楼层
棒棒哒
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-3-23 09:51:39 | 显示全部楼层
学习中,加油
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-26 13:55

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表