如何运行/调试你的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 从数据库提取二进制图片的处理代码
Sep 09 PHP
PHP 判断变量类型实现代码
Oct 23 PHP
PHP中创建空文件的代码[file_put_contents vs touch]
Jan 20 PHP
基于PHP读取TXT文件向数据库导入海量数据的方法
Apr 23 PHP
php使用websocket示例详解
Mar 12 PHP
PHP生成随机密码类分享
Jun 25 PHP
Laravel中注册Facades的步骤详解
Mar 16 PHP
yii2局部关闭(开启)csrf的验证的实例代码
Jul 10 PHP
php使用QueryList轻松采集js动态渲染页面方法
Sep 11 PHP
PDO::getAttribute讲解
Jan 28 PHP
浅谈laravel-admin form中的数据,在提交后,保存前,获取并进行编辑
Oct 21 PHP
php7中停止php-fpm服务的方法详解
May 09 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 xml文件操作代码(一)
2009/03/20 PHP
php计算十二星座的函数代码
2012/08/21 PHP
PHP SPL标准库之数据结构堆(SplHeap)简单使用实例
2015/05/12 PHP
浅析php-fpm静态和动态执行方式的比较
2016/11/09 PHP
Laravel框架中VerifyCsrfToken报错问题的解决
2017/08/30 PHP
一个可绑定数据源的jQuery数据表格插件
2010/07/17 Javascript
过虑特殊字符输入的js代码
2010/08/05 Javascript
轻松学习jQuery插件EasyUI EasyUI实现拖动基本操作
2015/11/30 Javascript
JavaScript中获取纯正的undefined的方法
2016/03/06 Javascript
BootStrap下拉框在firefox浏览器界面不友好的解决方案
2016/08/18 Javascript
Javascript 对cookie操作详解及实例
2016/12/29 Javascript
js中getBoundingClientRect的作用及兼容方案详解
2018/02/01 Javascript
vue单页面在微信下只能分享落地页的解决方案
2019/04/15 Javascript
js 递归json树实现根据子id查父id的方法分析
2019/11/08 Javascript
vue实现页面内容禁止选中功能,仅输入框和文本域可选
2019/11/09 Javascript
[02:38]DOTA2超级联赛专访Loda 认为IG世界最强
2013/05/27 DOTA
[03:08]TI9战队档案 - Vici Gaming
2019/08/20 DOTA
以Flask为例讲解Python的框架的使用方法
2015/04/29 Python
详解python使用turtle库来画一朵花
2019/03/21 Python
python笔记之mean()函数实现求取均值的功能代码
2019/07/05 Python
python selenium爬取斗鱼所有直播房间信息过程详解
2019/08/09 Python
python word转pdf代码实例
2019/08/16 Python
Python加密模块的hashlib,hmac模块使用解析
2020/01/02 Python
python线程join方法原理解析
2020/02/11 Python
tensorflow模型的save与restore,及checkpoint中读取变量方式
2020/05/26 Python
Python列表嵌套常见坑点及解决方案
2020/09/30 Python
css3 transform属性详解
2014/09/30 HTML / CSS
基于HTML5代码实现折叠菜单附源码下载
2015/11/27 HTML / CSS
以设计师精品品质提供快速时尚:Mostata
2019/05/10 全球购物
Magee 1866官网:Donegal粗花呢外套和大衣专家
2019/11/01 全球购物
大学生评语大全
2014/04/18 职场文书
小平小道观后感
2015/06/09 职场文书
2019最新公司租房合同(例文)
2019/07/18 职场文书
python之基数排序的实现
2021/07/26 Python
用 Python 定义 Schema 并生成 Parquet 文件详情
2021/09/25 Python
Python按顺序遍历并读取文件夹中文件
2022/04/29 Python