亚洲综合原千岁中文字幕_国产精品99久久久久久久vr_无码人妻aⅴ一区二区三区浪潮_成人h动漫精品一区二区三

主頁 > 知識(shí)庫 > PHP中斷言函數(shù)的使用詳解

PHP中斷言函數(shù)的使用詳解

熱門標(biāo)簽:安裝電銷外呼系統(tǒng) 釘釘打卡地圖標(biāo)注 福州人工外呼系統(tǒng)哪家強(qiáng) 地圖標(biāo)注平臺(tái)怎么給錢注冊(cè) 注冊(cè)400電話申請(qǐng) 新河科技智能外呼系統(tǒng)怎么樣 百度商鋪地圖標(biāo)注 常州地圖標(biāo)注服務(wù)商 衡水外呼系統(tǒng)平臺(tái)

原來一直以為斷言相關(guān)的函數(shù)是 PHPUnit 這些單元測試組件提供的,在閱讀手冊(cè)后才發(fā)現(xiàn),這個(gè) assert() 斷言函數(shù)是 PHP 本身就自帶的一個(gè)函數(shù)。也就是說,我們?cè)诖a中進(jìn)行簡單的測試的時(shí)候是不需要完全引入整個(gè)單元測試組件的。

assert() 斷言函數(shù)

assert(1==1);

assert(1==2);
// assert.exception = 0 時(shí),Warning: assert(): assert(1 == 2)
// assert.exception = 1 時(shí),F(xiàn)atal error: Uncaught AssertionError: 驗(yàn)證不通過

很明顯,第二段代碼無法通過斷言驗(yàn)證。這時(shí),PHP 就會(huì)返回一個(gè)警告或者異常錯(cuò)誤。為什么有可能是兩種錯(cuò)誤形式呢?當(dāng)我們?cè)O(shè)置 php.ini 中的 assert.exception 為 off 或者 0 時(shí),也就是關(guān)閉這個(gè)參數(shù)的能力時(shí),程序就會(huì)以 PHP5 的形式依然返回一個(gè)警告,就像上面代碼中的注釋一樣。同時(shí),通過 try...catch 也無法進(jìn)行異常的捕獲了。這個(gè)參數(shù)其實(shí)就是控制是否以正宗的異常對(duì)象進(jìn)行拋出。如果保持這個(gè)參數(shù)為默認(rèn)情況也就是設(shè)置為 on 或者 1 的話,就會(huì)直接拋出異常,程序中止。

從上述代碼可以看出,斷言的第一個(gè)參數(shù)是一個(gè)表達(dá)式,而且是需要一個(gè)返回 bool 類型對(duì)象的表達(dá)式。如果我們傳遞的是一個(gè)字符串或者一個(gè)數(shù)字呢?

// 設(shè)置 assert.exception = 0 進(jìn)行多條測試

assert(" ");
// Deprecated: assert(): Calling assert() with a string argument is deprecated
// Warning: assert(): Assertion " " failed

assert("1");
// Deprecated: assert(): Calling assert() with a string argument is deprecated

assert(0);
// Warning: assert(): assert(0) failed

assert(1);

assert("1==2");
// Deprecated: assert(): Calling assert() with a string argument is deprecated
// Warning: assert(): Assertion "1==2" failed 

很明顯第一個(gè)參數(shù)的表達(dá)式會(huì)進(jìn)行類型強(qiáng)制轉(zhuǎn)換,但是字符串類型會(huì)多出一個(gè)過時(shí)提醒,表明給 assert() 函數(shù)傳遞字符串類型的表達(dá)式類型已經(jīng)過時(shí)了。當(dāng)前的測試版本是 7.3 ,在將來可能就會(huì)直接報(bào)中止運(yùn)行的錯(cuò)誤或異常了。主要問題在于,如果傳遞的字符串本身也是一個(gè)表達(dá)式的話,會(huì)以這個(gè)表達(dá)式的內(nèi)容為基礎(chǔ)進(jìn)行判斷,這樣很容易產(chǎn)生歧義,就像最后一段代碼一樣。當(dāng)然,已經(jīng)過時(shí)的使用方式還是不推薦的,這里僅是做一個(gè)了解即可。

接下來我們看一下 assert() 函數(shù)的其他參數(shù),它的第二個(gè)參數(shù)是兩種類型,要么給一個(gè)字符串用來定義錯(cuò)誤的信息,要么給一個(gè) 異常類 用于拋出異常。

assert(1==1, "驗(yàn)證不通過");

assert(1==2, "驗(yàn)證不通過");
// Warning: assert(): 驗(yàn)證不通過 failed 

如果直接給的一個(gè)字符串,那么在警告的提示信息中,顯示的就是我們定義的這個(gè)錯(cuò)誤信息的內(nèi)容。這個(gè)非常好理解。

// 注意 assert.exception 設(shè)置不同的區(qū)別

assert(1==1,  new Exception("驗(yàn)證不通過"));

assert(1==2,  new Exception("驗(yàn)證不通過"));
// assert.exception = 1 時(shí),F(xiàn)atal error: Uncaught Exception: 驗(yàn)證不通過
// assert.exception = 0 時(shí),Warning: assert(): Exception: 驗(yàn)證不通過

當(dāng)然,我們也可以給一個(gè) 異常類 讓斷言拋出一個(gè)異常。在默認(rèn)情況下,這個(gè)異常的拋出將中止程序的運(yùn)行。也就是一個(gè)正常的異常拋出流程,我們可以使用 try...catch 進(jìn)行異常的捕獲。

try{
    assert(1==2,  new Exception("驗(yàn)證不通過"));
}catch(Exception $e){
    echo "驗(yàn)證失敗!:", $e->getMessage(), PHP_EOL;
}
// 驗(yàn)證失敗!:驗(yàn)證不通過

另外還有一個(gè)參數(shù)會(huì)對(duì)斷言的整體運(yùn)行產(chǎn)生影響,那就是 php.ini 中的 zend.assertions 參數(shù)。它包含三個(gè)值:

  • 1,生成并執(zhí)行代碼,一般在測試環(huán)境使用
  • 0,生成代碼但是在運(yùn)行時(shí)會(huì)路過
  • -1,不生成代碼,一般在正式環(huán)境使用

這個(gè)參數(shù)大家可以自行配置測試,默認(rèn)的 php.ini 中它的默認(rèn)值是 1 ,也就是正常的執(zhí)行 assert() 函數(shù)。

assert_options() 及相對(duì)應(yīng)的 php.ini 中的參數(shù)配置

PHP 中的斷言功能還為我們提供了一個(gè) assert_options() 函數(shù),用于方便地設(shè)置和獲取一些和斷言能力有關(guān)的參數(shù)配置。它能夠設(shè)置的斷言標(biāo)志包括:

標(biāo)志 | INI設(shè)置 | 默認(rèn)值 | 描述

  • | :-: | :-: | -:

ASSERT_ACTIVE | assert.active | 1 | 啟用 assert() 斷言 ASSERT_WARNING | assert.warning | 1 | 為每個(gè)失敗的斷言產(chǎn)生一個(gè) PHP 警告(warning) ASSERT_BAIL | assert.bail | 0 | 在斷言失敗時(shí)中止執(zhí)行 ASSERT_QUIET_EVAL | assert.quiet_eval | 0 | 在斷言表達(dá)式求值時(shí)禁用 error_reporting ASSERT_CALLBACK | assert.callback | (NULL) | 斷言失敗時(shí)調(diào)用回調(diào)函數(shù)

這些參數(shù)的含義都非常好理解,大家可以自己測試一下。我們就來看一下最后一個(gè) ASSERT_CALLBACK 的作用。其實(shí)它的說明也非常清楚,就是斷言失敗的情況下就進(jìn)入到這個(gè)選項(xiàng)定義的回調(diào)函數(shù)中。

assert_options(ASSERT_ACTIVE, 1);
assert_options(ASSERT_WARNING, 1);
assert_options(ASSERT_BAIL, 1);

assert_options(ASSERT_CALLBACK, function($params){
    echo "====faild====", PHP_EOL;
    var_dump($params);
    echo "====faild====", PHP_EOL;
});

assert(1!=1);
// ====faild====
// string(105) ".../source/一起學(xué)習(xí)PHP中斷言函數(shù)的使用.php"
// ====faild====

當(dāng)斷言失敗的時(shí)候,我們就進(jìn)入了回調(diào)函數(shù)中,在回調(diào)函數(shù)直接簡單的打印了傳給回調(diào)函數(shù)的參數(shù)內(nèi)容。可以看出,這個(gè)回調(diào)函數(shù)里面?zhèn)鬟f過來的是無法通過斷言的文件信息。

總結(jié)

學(xué)習(xí)掌握一下斷言函數(shù)的使用及配置,可以為我們將來學(xué)習(xí) PHPUnit 單元測試打下基礎(chǔ),當(dāng)然,本身這個(gè)能力的東西就不是很多,大家記住就好啦!

測試代碼:

github.com/zhangyue050…

以上就是PHP中斷言函數(shù)的使用詳解的詳細(xì)內(nèi)容,更多關(guān)于PHP中斷言函數(shù)的使用的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

您可能感興趣的文章:
  • PHP的命令行擴(kuò)展Readline相關(guān)函數(shù)的使用
  • PHP中垃圾回收相關(guān)函數(shù)的使用
  • 詳解各種PHP函數(shù)漏洞
  • PHP危險(xiǎn)函數(shù)禁用深入詳解
  • PHP的imageTtfText()函數(shù)深入詳解
  • PHP執(zhí)行系統(tǒng)命令函數(shù)實(shí)例講解
  • PHP之header函數(shù)詳解
  • php中sort函數(shù)排序知識(shí)點(diǎn)總結(jié)
  • php中rsort函數(shù)實(shí)例用法
  • 淺談定義一個(gè)PHP函數(shù)

標(biāo)簽:六安 唐山 遼陽 克拉瑪依 柳州 鶴崗 白城 鷹潭

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《PHP中斷言函數(shù)的使用詳解》,本文關(guān)鍵詞  PHP,中,斷言,函數(shù),的,使用,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《PHP中斷言函數(shù)的使用詳解》相關(guān)的同類信息!
  • 本頁收集關(guān)于PHP中斷言函數(shù)的使用詳解的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    成人高清视频免费观看| 免费一级片在线观看| 日韩中文字幕在线播放| 四虎久久影院| 欧美日本韩国| 亚欧成人乱码一区二区| 国产极品白嫩美女在线观看看| 国产成人精品综合在线| 青青久久精品| 精品毛片视频| 午夜欧美成人香蕉剧场| 黄视频网站在线免费观看| 国产综合91天堂亚洲国产| 日本特黄特黄aaaaa大片| 日本在线不卡视频| 欧美另类videosbestsex | 久久99欧美| 国产不卡福利| 91麻豆高清国产在线播放| 一级毛片看真人在线视频| 一本伊大人香蕉高清在线观看| 国产91精品一区二区| 国产一区二区精品在线观看| 亚洲精品久久久中文字| 二级片在线观看| 精品国产一区二区三区免费 | 成人免费一级纶理片| 天堂网中文在线| 亚洲第一页乱| 成人a大片在线观看| a级毛片免费全部播放| 久久国产影视免费精品| 亚飞与亚基在线观看| 成人a大片在线观看| 色综合久久久久综合体桃花网| 国产亚洲精品成人a在线| 国产伦精品一区二区三区无广告 | 日日夜夜婷婷| 成人在免费观看视频国产| 亚洲第一色在线| 国产不卡精品一区二区三区| 在线观看成人网 | 韩国毛片基地| 99久久精品国产高清一区二区| 国产麻豆精品视频| 国产福利免费视频| 欧美日本韩国| 尤物视频网站在线观看| 成人高清视频免费观看| 国产极品精频在线观看| a级精品九九九大片免费看| 成人免费福利片在线观看| 日日夜夜婷婷| 二级片在线观看| 九九免费精品视频| 精品国产三级a∨在线观看| 香蕉视频久久| 中文字幕一区二区三区精彩视频| 99色播| 精品久久久久久中文字幕一区| 欧美国产日韩在线| 天天做日日爱| 黄视频网站免费| 午夜欧美成人香蕉剧场| 欧美日本韩国| 亚洲精品影院| 可以免费看毛片的网站| 国产国语对白一级毛片| 一级女性大黄生活片免费| 久久精品成人一区二区三区| 91麻豆国产级在线| 欧美a免费| 色综合久久天天综线观看| 久久国产精品永久免费网站| 日韩欧美一二三区| 一本高清在线| 日本久久久久久久 97久久精品一区二区三区 狠狠色噜噜狠狠狠狠97 日日干综合 五月天婷婷在线观看高清 九色福利视频 | 亚洲精品久久玖玖玖玖| 亚洲女人国产香蕉久久精品| 韩国三级香港三级日本三级| 国产一区二区精品久久91| 日韩中文字幕在线观看视频| 国产伦精品一区二区三区在线观看| 青青青草影院 | 九九干| 国产精品1024在线永久免费| 精品久久久久久免费影院| 日本特黄一级| 超级乱淫黄漫画免费| 欧美另类videosbestsex久久| 国产不卡在线观看视频| 国产福利免费观看| 免费毛片播放| 久久福利影视| 欧美α片无限看在线观看免费| 欧美一级视频免费| 成人在免费观看视频国产| 韩国毛片免费大片| 天天做日日爱| 久久成人亚洲| 欧美另类videosbestsex高清 | 精品视频在线看| 久久99中文字幕| 亚洲第一页乱| 久久99欧美| 日本在线www| 午夜激情视频在线观看| 可以免费看毛片的网站| a级精品九九九大片免费看| 亚洲第一页乱| 天天色色色| 国产麻豆精品免费密入口| 夜夜操天天爽| 成人影视在线观看| 欧美激情一区二区三区视频高清| 日日爽天天| 日韩在线观看网站| 国产精品1024永久免费视频| 欧美激情一区二区三区在线 | 国产成人精品综合在线| 毛片成人永久免费视频| 成人高清视频免费观看| 日韩一级黄色片| 色综合久久手机在线| 国产高清在线精品一区二区| 欧美一级视频免费观看| 你懂的福利视频| 成人免费观看男女羞羞视频| 黄色短视频网站| 91麻豆国产级在线| 日本在线www| 青青久在线视频| 国产伦精品一区二区三区无广告 | 四虎影视库国产精品一区| 欧美国产日韩久久久| 久久国产一久久高清| 久久精品欧美一区二区| 欧美电影免费| 精品视频免费在线| 国产精品自拍在线| 久久国产精品永久免费网站| 韩国三级视频网站| 日韩一级黄色| 欧美国产日韩精品| 999久久狠狠免费精品| 成人免费观看男女羞羞视频| 毛片高清| 欧美日本免费| 国产欧美精品午夜在线播放| 成人高清免费| 久久久久久久男人的天堂| 亚洲爆爽| 国产一区二区精品| 午夜在线影院| 高清一级毛片一本到免费观看| 亚洲天堂免费观看| 99久久精品国产麻豆| 国产高清在线精品一区二区| 久久国产影视免费精品| 麻豆污视频| 久久99中文字幕| 天天做日日爱| 国产不卡高清在线观看视频| 99久久精品国产免费| 国产国语对白一级毛片| 精品国产亚洲人成在线| 日本特黄特色aaa大片免费| 亚洲 男人 天堂| 国产91精品露脸国语对白| 国产福利免费观看| 日韩一级黄色片| 黄视频网站免费| 美女被草网站| 日本在线不卡视频| 国产精品1024在线永久免费| 亚洲 欧美 91| 日日夜夜婷婷| 精品在线观看一区| 可以免费看毛片的网站| 午夜在线亚洲| 91麻豆tv| 久久国产精品永久免费网站| 日韩在线观看视频黄| 亚洲精品永久一区| 91麻豆精品国产高清在线| 99久久精品国产高清一区二区| 精品国产一区二区三区精东影业| 九九精品在线| 夜夜操天天爽| 欧美激情在线精品video| 日韩专区亚洲综合久久| 国产视频久久久| 韩国三级视频网站| 天天色成人| 久久国产精品永久免费网站| 国产不卡高清在线观看视频| 天天做日日爱| 亚洲精品永久一区| 久久国产一久久高清| 国产网站免费|