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