如何运行/调试你的PHP代码


Posted in PHP onOctober 23, 2020

前言

没有任何一名程序员可以一气呵成、完美无缺的在不用调试的情况下完成一个功能或模块。调试实际分很多种情况。本篇文章我分享下自己在实际开发工作中的经验,我个人理解,调试分三种,注意我所讲的是调试并非测试

  • 功能调试
  • 组件调试
  • 片段调试

功能调试是指在完成一个功能或者正在完成功能的过程中进行的错误、逻辑、结果的测试

组件调试是指将一个正在开发测试的插件、类进行错误、逻辑和结果的测试

片段调试是指将一段代码片段、函数、变量的预期和结果的测试

接下来我们看下本章列出的一些调试方法

暴力调试

这种方式简单粗暴,一般PHP程序员都会用,那就是浏览器调试,在编辑器内写完代码后随后打开万能的浏览器输入地址开始调试代码。

断点调试

说实在的,这种方式如果仅仅是看看输出结果,完全没必要,看似高大上实际浪费时间经历,一般我都会在代码块写好之后跑一遍debug,检查一下流程和结果是否在我的预期内或者遇到了某些逻辑问题无法察觉,还是选择断点调试比较靠谱,省时省力。最厉害的程序员也有懵逼的一刻不是吗?

命令调试

如果你在官网或者github上下载了一段代码片段,急于调试但还不愿意将代码片段放入项目中或者新开辟一个目录,完全可以使用php命令去执行这个代码块

php -f filename.php

如果代码片段较短,你可以使用

php -r "code ..."

执行运行PHP代码

片段调试

当你突然想起一个方法或者算法急于去验证它,但又不愿意打开编辑器或者执行php自带的命令行的话。你可以选择使用psysh工具去执行验证你的想法,这个工具安装十分简单

Psy Shell v0.8.17 (PHP 7.1.14 — cli) by Justin Hileman
New version is available (current: v0.8.17, latest: v0.9.6)
>>> date('Y-m-d H:i:s',time())
=> "2018-08-09 14:18:10"
>>>

下载地址 : https://psysh.org/

测试调试

这是一个严肃的调试方法,很多程序员都认为功能模块、组件开发完就结束的任务,随后交给测试人员去测试就好了。其实并不然,有些隐藏的bug或者致命错误、逻辑错误、系统错误(例如开启了无用的线程,未使用的变量、方法、类等等)是无法被测试出来的。实际作为一名程序员,开发功能的流程是这样的。

理解需求 -> 分解需求 -> 整理逻辑 -> 设计代码 -> 敲代码 -> 调试 -> 测试

如果最后一步你从来没有做过,那你只能是半个程序员。 测试我推荐使用PHPunit,更好的去理解自己的代码,才是一个合格的程序员。

编辑器调试

感觉讲这个有点废话了,如果你感觉打开命令行然后输入 php xxxx 特别费劲的话,你也可以选择使用编辑器自带的调试,一般像sublime,visual Studio Code , PHPStrom 都会自带的调试工具,其原理依旧是调用 php -r 但总比打开命令行输入命令要快的多。

致谢

这并不是一篇酝酿了很久的文章,是在我日常的开发中经常使用的几种调试方法。
感谢你看到这里,希望本篇文章可以帮助到你,有什么问题可以在评论区留言。谢谢

以上就是如何运行/调试你的PHP代码的详细内容,更多关于运行/调试 PHP代码的资料请关注三水点靠木其它相关文章!

PHP 相关文章推荐
Smarty的配置与高级缓存技术分享
Jun 05 PHP
php的mssql数据库连接类实例
Nov 28 PHP
php中heredoc与nowdoc介绍
Dec 25 PHP
php判断用户是否手机访问代码
Jun 08 PHP
zend framework中使用memcache的方法
Mar 04 PHP
非常经典的PHP文件上传类分享
May 15 PHP
PHP多种序列化/反序列化的方法详解
Jun 23 PHP
PHP编程快速实现数组去重的方法详解
Jul 22 PHP
PDO::exec讲解
Jan 28 PHP
PHP小程序支付功能完整版【基于thinkPHP】
Mar 26 PHP
PHP数组与字符串互相转换实例
May 05 PHP
PHP与Web页面的交互示例详解二
Aug 04 PHP
php redis setnx分布式锁简单原理解析
Oct 23 #PHP
PHP如何通过带尾指针的链表实现'队列'
Oct 22 #PHP
php使用event扩展的io复用测试的示例
Oct 20 #PHP
Aliyun Linux 编译安装 php7.3 tengine2.3.2 mysql8.0 redis5的过程详解
Oct 20 #PHP
phpcmsv9.0任意文件上传漏洞解析
Oct 20 #PHP
php实现记事本案例
Oct 20 #PHP
Laravel统一错误处理为JSON的方法介绍
Oct 18 #PHP
You might like
《一拳超人》埼玉一拳下去,他们存在了800年毫无意义!
2020/03/02 日漫
php ob_flush,flush在ie中缓冲无效的解决方法
2010/05/09 PHP
PHP实现根据数组某个键值大小进行排序的方法
2018/03/13 PHP
PHP折半(二分)查找算法实例分析
2018/05/12 PHP
PHP数组实际占用内存大小原理解析
2020/12/11 PHP
javascript Array.prototype.slice的使用示例
2013/11/14 Javascript
SeaJS入门教程系列之使用SeaJS(二)
2014/03/03 Javascript
jQuery DOM插入节点操作指南
2015/03/03 Javascript
JS实现为表格动态添加标题的方法
2015/03/31 Javascript
Javascript中3个需要注意的运算符
2015/04/02 Javascript
js实现鼠标点击左上角滑动菜单效果代码
2015/09/06 Javascript
如何把vuejs打包出来的文件整合到springboot里
2018/07/26 Javascript
vue 修改 data 数据问题并实时显示的方法
2018/08/27 Javascript
JS+HTML实现自定义上传图片按钮并显示图片功能的方法分析
2020/02/12 Javascript
linux系统使用python获取内存使用信息脚本分享
2014/01/15 Python
Python学习笔记整理3之输入输出、python eval函数
2015/12/14 Python
浅谈flask源码之请求过程
2018/07/26 Python
一步步教你用python的scrapy编写一个爬虫
2019/04/17 Python
python matplotlib画盒图、子图解决坐标轴标签重叠的问题
2020/01/19 Python
ubuntu16.04升级Python3.5到Python3.7的方法步骤
2020/08/20 Python
Python 解析xml文件的示例
2020/09/29 Python
Spy++的使用方法及下载教程
2021/01/29 Python
html5 CSS过度-webkit-transition使用介绍
2013/07/02 HTML / CSS
一套带网友答案的.NET笔试题
2016/12/06 面试题
渗透攻击的测试步骤
2014/06/07 面试题
大学生个人事迹材料
2014/01/21 职场文书
售后服务承诺书模板
2014/05/21 职场文书
群众路线教育实践活动个人对照检查材料思想汇报(社区班子)
2014/10/06 职场文书
个人总结与自我评价2015
2015/03/11 职场文书
签订劳动合同通知书
2015/04/16 职场文书
婚宴主持词
2015/06/30 职场文书
初中生入团申请书范文(五篇)
2019/10/16 职场文书
Python初学者必备的文件读写指南
2021/06/23 Python
分析JVM源码之Thread.interrupt系统级别线程打断
2021/06/29 Java/Android
分析SQL窗口函数之聚合窗口函数
2022/04/21 Oracle
Java多线程并发FutureTask使用详解
2022/06/28 Java/Android