assert函数_PHP 之 assert()函数
assert()函數(shù)其實是一個斷言函數(shù)。
那么什么是斷言呢?百度百科上是這么說的:編寫代碼時,我們總是會做出一些假設(shè),斷言就是用于在代碼中捕捉這些假設(shè)。說到這里,大家應(yīng)該能知道assert()函數(shù)是干嘛用的了吧?好,接下來我們看一下PHP官方文檔是怎么解釋的:
assert — 檢查一個斷言是否為 FALSE
assert() 會檢查指定的 assertion 并在結(jié)果為 FALSE 時采取適當?shù)男袆印?/p>
如果 assertion 是字符串,它將會被 assert() 當做 PHP 代碼來執(zhí)行。 assertion 是字符串的優(yōu)勢是當禁用斷言時它的開銷會更小,并且在斷言失敗時消息會包含 assertion 表達式。 這意味著如果你傳入了 boolean 的條件作為 assertion,這個條件將不會顯示為斷言函數(shù)的參數(shù);在調(diào)用你定義的 assert_options() 處理函數(shù)時,條件會轉(zhuǎn)換為字符串,而布爾值 FALSE 會被轉(zhuǎn)換成空字符串。
斷言這個功能應(yīng)該只被用來調(diào)試。 你應(yīng)該用于完整性檢查時測試條件是否始終應(yīng)該為 TRUE,來指示某些程序錯誤,或者檢查具體功能的存在(類似擴展函數(shù)或特定的系統(tǒng)限制和功能)。
斷言不應(yīng)該用于普通運行時操作,類似輸入?yún)?shù)的檢查。 作為一個經(jīng)驗法則,在斷言禁用時你的代碼也應(yīng)該能夠正確地運行。
assert() 的行為可以通過 assert_options() 來配置,或者手冊頁面上描述的 .ini 設(shè)置。
assert_options() ASSERT_CALLBACK 配置指令允許設(shè)置回調(diào)函數(shù)來處理失敗的斷言。
assert() 回調(diào)函數(shù)在構(gòu)建自動測試套件的時候尤其有用,因為它們允許你簡易地捕獲傳入斷言的代碼,并包含斷言的位置信息。 當信息能夠被其他方法捕獲,使用斷言可以讓它更快更方便!
回調(diào)函數(shù)應(yīng)該接受三個參數(shù)。 第一個參數(shù)包括了斷言失敗所在的文件。 第二個參數(shù)包含了斷言失敗所在的行號,第三個參數(shù)包含了失敗的表達式(如有任意 — 字面值例如 1 或者 "two" 將不會傳遞到這個參數(shù))。 PHP 5.4.8 及更高版本的用戶也可以提供第四個可選參數(shù),如果設(shè)置了,用于將 description 指定到 assert()。
相比于Python等其他語言來講,PHP的assert()函數(shù)顯得更加復(fù)雜。而在一般的開發(fā)中,當然,這是由于我沒有寫過單元測試,我是比較習(xí)慣于用if()else{}來進行布爾值判斷,或者是使用var_dump來打印調(diào)試。所以基本很少使用assert()這個斷言函數(shù)。尤其是因為既然它一般不推薦出現(xiàn)在生產(chǎn)模式下,那么開發(fā)完后的刪除操作顯得尤為重要,不經(jīng)意的就耗費了很多時間。
以上內(nèi)容希望幫助到大家,很多PHPer在進階的時候總會遇到一些問題和瓶頸,業(yè)務(wù)代碼寫多了沒有方向感,不知道該從那里入手去提升,對此我整理了一些資料,包括但不限于:分布式架構(gòu)、高可擴展、高性能、高并發(fā)、服務(wù)器性能調(diào)優(yōu)、TP6,laravel,YII2,Redis,Swoole、Swoft、Kafka、Mysql優(yōu)化、shell腳本、Docker、微服務(wù)、Nginx等多個知識點高級進階干貨需要的可以免費分享給大家,需要請戳這里鏈接 或者關(guān)注咱們下面的專欄PHP大神進階?zhuanlan.zhihu.com 創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅持創(chuàng)作打卡瓜分現(xiàn)金大獎總結(jié)
以上是生活随笔為你收集整理的assert函数_PHP 之 assert()函数的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 荣耀手机wifi信号如何连接服务器,荣耀
- 下一篇: 100个网络基础必备知识 ,值得收藏!