



下載本文檔
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第PHP中斷言函數的使用詳解總結
原來一直以為斷言相關的函數是PHPUnit這些單元測試組件提供的,在閱讀手冊后才發現,這個assert()斷言函數是PHP本身就自帶的一個函數。也就是說,我們在代碼中進行簡單的測試的時候是不需要完全引入整個單元測試組件的。
assert()斷言函數
assert(1==1);
assert(1==2);
//assert.exception=0時,Warning:assert():assert(1==2)
//assert.exception=1時,Fatalerror:UncaughtAssertionError:驗證不通過
很明顯,第二段代碼無法通過斷言驗證。這時,PHP就會返回一個警告或者異常錯誤。為什么有可能是兩種錯誤形式呢?當我們設置php.ini中的assert.exception為off或者0時,也就是關閉這個參數的能力時,程序就會以PHP5的形式依然返回一個警告,就像上面代碼中的注釋一樣。同時,通過try...catch也無法進行異常的捕獲了。這個參數其實就是控制是否以正宗的異常對象進行拋出。如果保持這個參數為默認情況也就是設置為on或者1的話,就會直接拋出異常,程序中止。
從上述代碼可以看出,斷言的第一個參數是一個表達式,而且是需要一個返回bool類型對象的表達式。如果我們傳遞的是一個字符串或者一個數字呢?
//設置assert.exception=0進行多條測試
assert("");
//Deprecated:assert():Callingassert()withastringargumentisdeprecated
//Warning:assert():Assertion""failed
assert("1");
//Deprecated:assert():Callingassert()withastringargumentisdeprecated
assert(0);
//Warning:assert():assert(0)failed
assert(1);
assert("1==2");
//Deprecated:assert():Callingassert()withastringargumentisdeprecated
//Warning:assert():Assertion"1==2"failed
很明顯第一個參數的表達式會進行類型強制轉換,但是字符串類型會多出一個過時提醒,表明給assert()函數傳遞字符串類型的表達式類型已經過時了。當前的測試版本是7.3,在將來可能就會直接報中止運行的錯誤或異常了。主要問題在于,如果傳遞的字符串本身也是一個表達式的話,會以這個表達式的內容為基礎進行判斷,這樣很容易產生歧義,就像最后一段代碼一樣。當然,已經過時的使用方式還是不推薦的,這里僅是做一個了解即可。
接下來我們看一下assert()函數的其他參數,它的第二個參數是兩種類型,要么給一個字符串用來定義錯誤的信息,要么給一個異常類用于拋出異常。
assert(1==1,"驗證不通過");
assert(1==2,"驗證不通過");
//Warning:assert():驗證不通過failed
如果直接給的一個字符串,那么在警告的提示信息中,顯示的就是我們定義的這個錯誤信息的內容。這個非常好理解。
//注意assert.exception設置不同的區別
assert(1==1,newException("驗證不通過"));
assert(1==2,newException("驗證不通過"));
//assert.exception=1時,Fatalerror:UncaughtException:驗證不通過
//assert.exception=0時,Warning:assert():Exception:驗證不通過
當然,我們也可以給一個異常類讓斷言拋出一個異常。在默認情況下,這個異常的拋出將中止程序的運行。也就是一個正常的異常拋出流程,我們可以使用try...catch進行異常的捕獲。
assert(1==2,newException("驗證不通過"));
}catch(Exception$e){
echo"驗證失??!:",$e-getMessage(),PHP_EOL;
//驗證失??!:驗證不通過
另外還有一個參數會對斷言的整體運行產生影響
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 電梯困人培訓方案
- 初一寒假安全教育主題班會
- 護士入崗前教育
- 讀單詞游戲設計
- 頤和園說課課件
- 體育運動中燙燒傷防護與處理
- 頸椎的護理課件
- 界面設計風格解析與應用
- 《智能網聯汽車技術》課件-自動駕駛等級劃分的認知
- 預防流感主題班會課件
- 智能手機使用教程PPT學習課件
- 變速箱廠總平面布置設計設施規劃與物流分析課程設計
- NB/T 10756-2021煤礦在用無軌膠輪車安全檢測檢驗規范
- GB/T 31586.2-2015防護涂料體系對鋼結構的防腐蝕保護涂層附著力/內聚力(破壞強度)的評定和驗收準則第2部分:劃格試驗和劃叉試驗
- 2023年上海高考生物真題試卷(答案解析版)
- 臨床各科急救流程規范規范圖
- 交安工程勞務分包參考價格(范本)
- 2022年專業技術人員繼續教育公需課題庫(含答案)
- GB∕T 13554-2020 高效空氣過濾器
- (新版)孤殘兒童試題庫(含答案)
- 普通生物學說課(張艷麗)
評論
0/150
提交評論