您也可以使用匿名函式來做到這一點
<?php
$socket = @socket_create(AF_INET, SOCK_STREAM, SOL_TCP) or function() {
$errstr = socket_strerror(socket_last_error());
echo ("建立 socket 失敗: " . $errstr);
socket_clear_error();
};
?>
(PHP 4 >= 4.2.0, PHP 5, PHP 7, PHP 8)
socket_clear_error — 清除通訊端的錯誤或最後一個錯誤碼
此函式會清除指定通訊端的錯誤碼,如果未指定通訊端,則清除全域最後一個通訊端錯誤。
此函式允許明確地重設通訊端或擴充全域最後一個錯誤碼的錯誤碼值。這在應用程式的某個部分中偵測是否發生錯誤時可能很有用。
無回傳值。
您也可以使用匿名函式來做到這一點
<?php
$socket = @socket_create(AF_INET, SOCK_STREAM, SOL_TCP) or function() {
$errstr = socket_strerror(socket_last_error());
echo ("建立 socket 失敗: " . $errstr);
socket_clear_error();
};
?>
如果您想用少量程式碼清除錯誤,可以參考大多數人在 SQL 查詢檢查中使用的類似技巧:
<?php
$result = mysql_query($sql) or die(/* 任何程式碼 */);
?>
它看起來像這樣
<?php
if (!($socket = socket_create(/* 任何程式碼 */)) {
echo ("建立 socket 失敗: " . socket_strerror(socket_last_error()) and socket_clear_error());
}
?>
如您所見,我在這裡使用 "and" 而不是 "or",因為第一部分始終會回傳 true,因此如果您使用 or,PHP 的惰性布林檢查將不會執行最後一部分,而如果第一部分為 true,則使用 and 會執行最後一部分。