你也可以使用匿名函数这样做
<?php
$socket = @socket_create(AF_INET, SOCK_STREAM, SOL_TCP) or function() {
$errstr = socket_strerror(socket_last_error());
echo ("创建套接字失败: " . $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 ("创建套接字失败: " . $errstr);
socket_clear_error();
};
?>
如果你想用少量代码清除错误,可以采用类似于大多数人在 SQL 查询检查中所做的方法。
<?php
$result = mysql_query($sql) or die(/* 代码 */);
?>
它可能看起来像这样
<?php
if (!($socket = socket_create(/* 代码 */)) {
echo ("创建套接字失败: " . socket_strerror(socket_last_error()) and socket_clear_error());
}
?>
如你所见,我在这里使用“and”而不是“or”,因为第一部分总是返回 true,因此,如果你使用 or,PHP 的惰性布尔检查将不会执行最后一部分,而如果第一部分为 true,则使用 and 会执行。