如何運(yùn)行/調(diào)試你的PHP代碼
前言
沒有任何一名程序員可以一氣呵成、完美無缺的在不用調(diào)試的情況下完成一個(gè)功能或模塊。調(diào)試實(shí)際分很多種情況。本篇文章我分享下自己在實(shí)際開發(fā)工作中的經(jīng)驗(yàn),我個(gè)人理解,調(diào)試分三種,注意我所講的是調(diào)試并非測試
- 功能調(diào)試
- 組件調(diào)試
- 片段調(diào)試
功能調(diào)試是指在完成一個(gè)功能或者正在完成功能的過程中進(jìn)行的錯(cuò)誤、邏輯、結(jié)果的測試
組件調(diào)試是指將一個(gè)正在開發(fā)測試的插件、類進(jìn)行錯(cuò)誤、邏輯和結(jié)果的測試
片段調(diào)試是指將一段代碼片段、函數(shù)、變量的預(yù)期和結(jié)果的測試
接下來我們看下本章列出的一些調(diào)試方法
暴力調(diào)試
這種方式簡單粗暴,一般PHP程序員都會(huì)用,那就是瀏覽器調(diào)試,在編輯器內(nèi)寫完代碼后隨后打開萬能的瀏覽器輸入地址開始調(diào)試代碼。
斷點(diǎn)調(diào)試
說實(shí)在的,這種方式如果僅僅是看看輸出結(jié)果,完全沒必要,看似高大上實(shí)際浪費(fèi)時(shí)間經(jīng)歷,一般我都會(huì)在代碼塊寫好之后跑一遍debug,檢查一下流程和結(jié)果是否在我的預(yù)期內(nèi)或者遇到了某些邏輯問題無法察覺,還是選擇斷點(diǎn)調(diào)試比較靠譜,省時(shí)省力。最厲害的程序員也有懵逼的一刻不是嗎?
命令調(diào)試
如果你在官網(wǎng)或者github上下載了一段代碼片段,急于調(diào)試但還不愿意將代碼片段放入項(xiàng)目中或者新開辟一個(gè)目錄,完全可以使用php命令去執(zhí)行這個(gè)代碼塊
php -f filename.php
如果代碼片段較短,你可以使用
php -r "code ..."
執(zhí)行運(yùn)行PHP代碼
片段調(diào)試
當(dāng)你突然想起一個(gè)方法或者算法急于去驗(yàn)證它,但又不愿意打開編輯器或者執(zhí)行php自帶的命令行的話。你可以選擇使用psysh工具去執(zhí)行驗(yàn)證你的想法,這個(gè)工具安裝十分簡單
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/
測試調(diào)試
這是一個(gè)嚴(yán)肅的調(diào)試方法,很多程序員都認(rèn)為功能模塊、組件開發(fā)完就結(jié)束的任務(wù),隨后交給測試人員去測試就好了。其實(shí)并不然,有些隱藏的bug或者致命錯(cuò)誤、邏輯錯(cuò)誤、系統(tǒng)錯(cuò)誤(例如開啟了無用的線程,未使用的變量、方法、類等等)是無法被測試出來的。實(shí)際作為一名程序員,開發(fā)功能的流程是這樣的。
理解需求 -> 分解需求 -> 整理邏輯 -> 設(shè)計(jì)代碼 -> 敲代碼 -> 調(diào)試 -> 測試
如果最后一步你從來沒有做過,那你只能是半個(gè)程序員。 測試我推薦使用PHPunit,更好的去理解自己的代碼,才是一個(gè)合格的程序員。
編輯器調(diào)試
感覺講這個(gè)有點(diǎn)廢話了,如果你感覺打開命令行然后輸入 php xxxx 特別費(fèi)勁的話,你也可以選擇使用編輯器自帶的調(diào)試,一般像sublime,visual Studio Code , PHPStrom 都會(huì)自帶的調(diào)試工具,其原理依舊是調(diào)用 php -r 但總比打開命令行輸入命令要快的多。
致謝
這并不是一篇醞釀了很久的文章,是在我日常的開發(fā)中經(jīng)常使用的幾種調(diào)試方法。
感謝你看到這里,希望本篇文章可以幫助到你,有什么問題可以在評(píng)論區(qū)留言。謝謝
以上就是如何運(yùn)行/調(diào)試你的PHP代碼的詳細(xì)內(nèi)容,更多關(guān)于運(yùn)行/調(diào)試 PHP代碼的資料請關(guān)注腳本之家其它相關(guān)文章!
- Ubuntu下開啟php調(diào)試模式報(bào)錯(cuò)信息解決辦法
- PHPStorm 2020.1 調(diào)試 Nodejs的多種方法詳解
- PhpStorm+xdebug+postman調(diào)試技巧分享
- php開發(fā)最強(qiáng)大的IDE編輯的phpstorm 2020.2配置Xdebug調(diào)試的詳細(xì)教程
- phpStudy vscode 搭建debug調(diào)試的教程詳解
- 解決windows上php xdebug 無法調(diào)試的問題
- Vagrant(WSL)+PHPStorm+Xdebu 斷點(diǎn)調(diào)試環(huán)境搭建
- PhpStorm 如何優(yōu)雅的調(diào)試Hyperf的方法步驟
- PHP如何打印跟蹤調(diào)試信息
相關(guān)文章
Yii2實(shí)現(xiàn)自定義獨(dú)立驗(yàn)證器的方法
這篇文章主要介紹了Yii2實(shí)現(xiàn)自定義獨(dú)立驗(yàn)證器的方法,結(jié)合實(shí)例形式分析了Yii2自定義獨(dú)立驗(yàn)證器的實(shí)現(xiàn)與使用方法,需要的朋友可以參考下2017-05-05
PHP中__get()和__set()的用法實(shí)例詳解
在PHP5中,預(yù)定義了兩個(gè)函數(shù)“__get()”和“__set()”來獲取和賦值其屬性,對每個(gè)字段進(jìn)行set和get的操作。只需要加上兩個(gè)魔術(shù)方法即可2013-06-06
Laravel5.1 框架數(shù)據(jù)庫操作DB運(yùn)行原生SQL的方法分析
這篇文章主要介紹了Laravel5.1 框架數(shù)據(jù)庫操作DB運(yùn)行原生SQL的方法,結(jié)合實(shí)例形式分析了laravel5.1使用DB運(yùn)行原生SQL的相關(guān)操作技巧與注意事項(xiàng),需要的朋友可以參考下2020-01-01
PHP小白必須要知道的php基礎(chǔ)知識(shí)(超實(shí)用)
PHP是一 種被廣泛應(yīng)用的開放源代碼的、基于服務(wù)器端的用于產(chǎn)生動(dòng)態(tài)網(wǎng)頁 的、可嵌入HTML中的腳本程序語言,尤其適合 WEB 開發(fā)。下面給大家分享PHP小白必須要知道的php基礎(chǔ)知識(shí),超實(shí)用,感興趣的朋友一起學(xué)習(xí)吧2017-10-10
Zend Framework入門教程之Zend_Session會(huì)話操作詳解
這篇文章主要介紹了Zend Framework入門教程之Zend_Session會(huì)話操作,結(jié)合實(shí)例形式詳細(xì)分析了Zend_Session會(huì)話操作的具體使用技巧,需要的朋友可以參考下2016-12-12
laravel單元測試之phpUnit中old()函數(shù)報(bào)錯(cuò)解決
這篇文章主要給大家介紹了關(guān)于laravel單元測試之phpUnit中old()函數(shù)報(bào)錯(cuò)的解決過程,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。2017-09-09

