我看到的PHP代碼的幾個比特的方式我不熟悉使用or
。例如:
fopen($site,"r") or die("Unable to connect to $site");
這是否等於||
?
爲什麼要用這個代替try catch
塊?什麼會導致程序運行or die()
?
我看到的PHP代碼的幾個比特的方式我不熟悉使用or
。例如:
fopen($site,"r") or die("Unable to connect to $site");
這是否等於||
?
爲什麼要用這個代替try catch
塊?什麼會導致程序運行or die()
?
這是大部分,但是......
原因的兩個不同 變化「和」和「或」運算符 的是,他們在不同的優先級 操作。
或模具發生與第一命令失敗。
它類似於try catch,但這是更直接的方法。
注意,這是一個經典試驗:
fopen($site,"r") or die("Unable to connect to $site");
只有的fopen($網站, 「R」)返回false,將測試的下半年運行: '模(' 錯誤「) 」。
同樣是if(a || b); b只在a返回false時才運行。
在PHP模具是退出(); http://www.php.net/manual/en/function.exit.php
完全停止執行當前腳本,並打印出錯誤消息。
它與'try-catch'不相似。 – KingCrunch 2011-04-21 17:16:52
有沒有趕上 – Gordon 2011-04-21 20:37:26
_類似的嘗試趕上,在第一個語句,並在假,執行第二個。或者在真實的情況下,不執行第二個陳述或'catch'。我在評論海報問題'你爲什麼要用這個而不是try catch塊? '當try/catch發生錯誤時,這是布爾值。 – GAgnew 2011-04-25 05:38:40
or
有其他優先權。具體的陳述是布爾運算符的小竅門。就像在普通的if
-test-expression中一樣,只有第一部分的計算結果爲false
纔會執行第二部分。這意味着,如果fopen()
沒有失敗,則die()
根本不被觸碰。
但是,try-catch
只適用於例外,但fopen()
不會拋出任何。
今天這樣的事情是「不太好」的風格。使用異常而不是硬流產
if (!($res = fopen($site, 'r'))) throw new Exception ("Reading of $site failed");
有槍你的頭!*打開文件或死* – awm 2011-04-21 17:14:54
*(相關)* [這是什麼符號意味着PHP(http://stackoverflow.com/questions-3737139/reference-what-does-this-symbol-mean-in-php) – Gordon 2011-04-21 17:30:20
你知道,我不認爲這是重複的。這實際上是一個關於「表達或死亡」的含義的問題。 – 2011-04-21 20:14:00