PHP中的@符號(hào)一般被稱作"錯(cuò)誤控制運(yùn)算符"。該符號(hào)用于掩蓋函數(shù)或表達(dá)式產(chǎn)生的錯(cuò)誤信息。
舉個(gè)例子,當(dāng)我們嘗試讀取一個(gè)不存在的文件時(shí),系統(tǒng)會(huì)輸出一個(gè)錯(cuò)誤提示,告訴我們文件不存在。而如果在讀取文件的表達(dá)式前添加@符號(hào),系統(tǒng)會(huì)忽略錯(cuò)誤提示,繼續(xù)執(zhí)行下面的代碼。
$file = @file('non_exist.txt'); echo "讀取成功";
上述代碼中,如果文件不存在,@file函數(shù)不會(huì)輸出提示信息。而"讀取成功"的提示語仍然會(huì)被輸出。
需要注意的是,@符號(hào)不應(yīng)當(dāng)被亂用。如果在函數(shù)中有多個(gè)變量存在,@符號(hào)只會(huì)掩蓋其中出錯(cuò)的部分,如果你不想受到其它變量的影響,可以使用try...catch語句進(jìn)行跳轉(zhuǎn)。
function readFile($filename) { if (!file_exists($filename)) { throw new Exception('文件不存在!'); } $fileContent = file_get_contents($filename); return $fileContent; } try { $file = readFile('non_exist.txt'); echo $file; } catch (Exception $e) { echo $e->getMessage(); }
上述代碼中,readFile函數(shù)中如果出錯(cuò),則會(huì)拋出一個(gè)異常。在try語句中執(zhí)行readFile函數(shù),如果出錯(cuò)則會(huì)跳轉(zhuǎn)到catch語句中進(jìn)行處理。
總之,在使用@符號(hào)時(shí),需要謹(jǐn)慎思考。有些錯(cuò)誤信息是很重要的,如果被掩蓋,可能會(huì)導(dǎo)致程序出現(xiàn)隱藏的bug。