我想检查IF中的三个函数中的任何一个是否未成功执行。如果其中任何一个没有运行,我想得到一个返回值false。
if($ext == "gif" or $ext == "png"){
imagecolortransparent($new, imagecolorallocatealpha($new, 0, 0, 0, 127));
imagealphablending($new, false);
imagesavealpha($new, true);
}
例如,我想知道imagecolortransparent,imagealphablending,imagesavealpha三个函数是否都成功执行,如果没有,则返回false。 我是否需要检查以下各项功能,或者更好的方式?
if($ext == "gif" or $ext == "png"){
if (!@imagecolortransparent($new, imagecolorallocatealpha($new, 0, 0, 0, 127)))
return false;
if (!@imagealphablending($new, false))
return false;
if (!@imagesavealpha($new, true))
return false;
}
感谢。
答案 0 :(得分:1)
if($ext == "gif" or $ext == "png"){
if ((!@imagecolortransparent($new, imagecolorallocatealpha($new, 0, 0, 0, 127)))
|| (!@imagealphablending($new, false))
|| (!@imagesavealpha($new, true)) )
{
return false;
}
}
这也将做同样的功能。但是你不知道哪种功能失败了。
答案 1 :(得分:0)
你可以将它们加入到单个if中,但是你的方法可能是更好的方法,因为如果其中一个函数调用失败,它将不会执行以下语句。
答案 2 :(得分:0)
您可以设置一个自定义错误处理程序,将所有PHP错误转换为ErrorException
并在全局注册。完成后,三个函数中的任何一个函数中的错误都会引发异常,您可以使用try / catch块处理该异常。
答案 3 :(得分:0)
if (!@imagecolortransparent($new, imagecolorallocatealpha($new, 0, 0, 0, 127))
|| !@imagealphablending($new, false)
|| !@imagesavealpha($new, true)) return false;
或只是
return (@imagecolortransparent($new, imagecolorallocatealpha($new, 0, 0, 0, 127))
&& @imagealphablending($new, false)
&& @imagesavealpha($new, true));
不知道,如果此处需要@
。你应该尽量避免它。
答案 4 :(得分:0)
我认为你做的很好,你可以连接表达式。它也是这样做的,如果函数返回false,其余的表达式将不会被跟踪(运行时优化):
if($ext == "gif" or $ext == "png"){
if (
@imagecolortransparent($new, imagecolorallocatealpha($new, 0, 0, 0, 127))
and @imagealphablending($new, false)
and @imagesavealpha($new, true)
) return true;
return false;
}
或使用变量和保留第二个如果因此使其更具表现力:
if($ext == "gif" or $ext == "png")
return
@imagecolortransparent($new, imagecolorallocatealpha($new, 0, 0, 0, 127))
&& @imagealphablending($new, false)
&& @imagesavealpha($new, true)
;
答案 5 :(得分:0)
以下是我将如何做到这一点。
if($ext == "gif" or $ext == "png"){
$return = TRUE;
$return = $return && imagecolortransparent($new, imagecolorallocatealpha($new, 0, 0, 0, 127));
$return = $return && imagealphablending($new, false);
$return = $return && imagesavealpha($new, true);
return $return;
}
基本上我是And
- 所有回复以验证它们都是真的。如果其中任何一个返回FALSE
,则该函数将返回FALSE
。
有更多美丽的方法可以做到这一点,但我发现这种方式可以合理地清楚地知道发生了什么。