如何运行/调试你的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 22 PHP
Zend的Registry机制的使用说明
May 02 PHP
解析用PHP实现var_export的详细介绍
Jun 20 PHP
php使用fputcsv()函数csv文件读写数据的方法
Jan 06 PHP
Laravel 5框架学习之Blade 简介
Apr 08 PHP
利用PHP fsockopen 模拟POST/GET传送数据的方法
Sep 22 PHP
PHP读书笔记_运算符详解
Jul 01 PHP
PHP封装返回Ajax字符串和JSON数组的方法
Feb 17 PHP
php使用str_replace替换多维数组的实现方法分析
Jun 15 PHP
PHP字典树(Trie树)定义与实现方法示例
Oct 09 PHP
PHP实现类似题库抽题效果
Aug 16 PHP
Thinkphp5.0框架视图view的模板布局用法分析
Oct 12 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
《斗罗大陆》六翼天使武魂最强,为什么老千家不是上三宗?
2020/03/02 国漫
php ckeditor上传图片文件名乱码解决方法
2013/11/15 PHP
php结合web uploader插件实现分片上传文件
2016/05/10 PHP
thinkphp3.2实现跨控制器调用其他模块的方法
2017/03/14 PHP
JavaScript 编程引入命名空间的方法与代码
2007/08/13 Javascript
JavaScript 事件冒泡简介及应用
2010/01/11 Javascript
jquery解析XML字符串和XML文件的方法说明
2014/02/21 Javascript
jquery通过visible来判断标签是否显示或隐藏
2014/05/08 Javascript
基于Node.js的强大爬虫 能直接发布抓取的文章哦
2016/01/10 Javascript
javascript css红色经典选项卡效果实现代码
2016/05/17 Javascript
React组件之间的通信的实例代码
2017/06/27 Javascript
seajs下require书写约定实例分析
2018/05/16 Javascript
在vue中使用express-mock搭建mock服务的方法
2018/11/07 Javascript
如何在基于vue-cli的项目自定义打包环境
2018/11/10 Javascript
JavaScript数据结构与算法之检索算法示例【二分查找法、计算重复次数】
2019/02/22 Javascript
vue 中 命名视图的用法实例详解
2019/08/14 Javascript
js 判断当前时间是否处于某个一个时间段内
2019/09/19 Javascript
Vue.js实现可编辑的表格
2019/12/11 Javascript
Python贪吃蛇游戏编写代码
2020/10/26 Python
Django中间件工作流程及写法实例代码
2018/02/06 Python
python-str,list,set间的转换实例
2018/06/27 Python
Django中的文件的上传的几种方式
2018/07/23 Python
Python面向对象之Web静态服务器
2019/09/03 Python
使用python3批量下载rbsp数据的示例代码
2019/12/20 Python
TensorFlow查看输入节点和输出节点名称方式
2020/01/04 Python
详解python实现可视化的MD5、sha256哈希加密小工具
2020/09/14 Python
基于python模拟bfs和dfs代码实例
2020/11/19 Python
HTML5的新特性(1)
2016/03/03 HTML / CSS
澳大利亚最大的网上油画销售画廊:Direct Art Australia
2018/04/15 全球购物
美国礼品卡交易网站:Cardpool
2018/08/27 全球购物
荷兰游戏商店:Allyouplay
2019/03/16 全球购物
CSMA/CD介质访问控制协议
2015/11/17 面试题
毕业生物理教师求职信
2013/10/17 职场文书
公司任命书模板
2014/06/06 职场文书
职工培训工作总结
2015/08/10 职场文书
python实现批量提取指定文件夹下同类型文件
2021/04/05 Python