如何运行/调试你的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 相关文章推荐
PHP注释实例技巧
Oct 03 PHP
php 数组动态添加实现代码(最土团购系统的价格排序)
Dec 30 PHP
php中通过curl smtp发送邮件
Jun 05 PHP
一个简单的网页密码登陆php代码
Jul 17 PHP
php使用mkdir创建多级目录入门例子
May 10 PHP
php实例分享之二维数组排序
May 15 PHP
PHP中使用imagick实现把PDF转成图片
Jan 26 PHP
yii的入口文件index.php中为什么会有这两句
Aug 04 PHP
PHP中功能强大却很少使用的函数实例小结
Nov 10 PHP
php实现的中文分词类完整实例
Feb 06 PHP
php获取网站根目录物理路径的几种方法(推荐)
Mar 04 PHP
PHP的PDO事务与自动提交
Jan 24 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
一个简单的PHP验证码实现代码
2014/05/10 PHP
PHP解决中文乱码
2017/04/28 PHP
[原创]PHP正则删除html代码中a标签并保留标签内容的方法
2017/05/23 PHP
Laravel框架实现的记录SQL日志功能示例
2018/06/19 PHP
DOM_window对象属性之--clipboardData对象操作代码
2011/02/03 Javascript
js实现幻灯片播放图片示例代码
2013/11/07 Javascript
第十章之巨幕页头缩略图与警告框组件
2016/04/25 Javascript
jquery获取img的src值的简单实例
2016/05/17 Javascript
详解JavaScript实现动态的轮播图效果
2019/04/29 Javascript
js实现筛选功能
2020/11/24 Javascript
[41:20]2014 DOTA2华西杯精英邀请赛 5 24 NewBee VS DK
2014/05/26 DOTA
python SSH模块登录,远程机执行shell命令实例解析
2018/01/12 Python
对python中array.sum(axis=?)的用法介绍
2018/06/28 Python
处理Selenium3+python3定位鼠标悬停才显示的元素
2019/07/31 Python
Python解析json时提示“string indices must be integers”问题解决方法
2019/07/31 Python
python web框架Flask实现图形验证码及验证码的动态刷新实例
2019/10/14 Python
pandas-resample按时间聚合实例
2019/12/27 Python
用python介绍4种常用的单链表翻转的方法小结
2020/02/24 Python
基于django micro搭建网站实现加水印功能
2020/05/22 Python
详解Python 中的 defaultdict 数据类型
2021/02/22 Python
美国第一个网上卖鞋零售商:OnlineShoes.com
2017/09/24 全球购物
全球领先的中国制造商品在线批发平台:DHgate
2020/01/28 全球购物
SOA的常见陷阱或者误解是什么
2014/10/05 面试题
师德建设实施方案
2014/03/21 职场文书
学校百日安全生产活动总结
2014/07/05 职场文书
2014教师个人自我评价范文
2014/09/13 职场文书
学习十八届四中全会精神思想汇报
2014/10/23 职场文书
公务员年度考核评语
2014/12/31 职场文书
2015年幼儿园后勤工作总结
2015/04/25 职场文书
十七岁的单车观后感
2015/06/12 职场文书
2015少先队大队辅导员工作总结
2015/07/24 职场文书
同学会演讲稿
2019/04/02 职场文书
基于python制作简易版学生信息管理系统
2021/04/20 Python
Python爬虫基础之初次使用scrapy爬虫实例
2021/06/26 Python
elementui的el-popover修改样式不生效的解决
2021/06/30 Javascript
windows server2016安装oracle 11g的图文教程
2022/07/15 Servers