【发布时间】:2011-08-22 20:34:26
【问题描述】:
我有一个接受 GD 图像资源作为其参数之一的类。据我所知,没有办法输入提示,因为它是资源而不是对象。有没有办法验证提供的参数是否是有效的 GD 图像资源(除了使用此资源失败的进一步功能)?
PS:请不要在回答中提及 ImageMagick...
【问题讨论】:
标签: php gd type-hinting
我有一个接受 GD 图像资源作为其参数之一的类。据我所知,没有办法输入提示,因为它是资源而不是对象。有没有办法验证提供的参数是否是有效的 GD 图像资源(除了使用此资源失败的进一步功能)?
PS:请不要在回答中提及 ImageMagick...
【问题讨论】:
标签: php gd type-hinting
get_resource_type 函数应该可以帮助您。缺少编写代码并查看它返回的内容,我不确定它对 GD 资源会说什么,所以你自己在那里。不过应该是一个很好的起点!
【讨论】:
如果资源是 gd 图像,get_resource_type() 返回“gd”,这就是你需要的。
【讨论】:
从 PHP 8.0 开始,get_resource_type 带有 GD 图像参数,将抛出 Fatal Error:
PHP 致命错误:未捕获的 TypeError:get_resource_type():参数 #1 ($resource) 必须是资源类型,给定 GdImage。
我们应该使用get_class() 函数。 PHP 文档说明:
从 PHP 7.2.0 起不再允许显式传递 null 作为对象。该参数仍然是可选的,并且从类内部调用不带参数的 get_class() 将起作用,但现在传递 null 会发出 E_WARNING 通知。
因此,在 PHP 8.0 中检查这一点的正确方法应该是:
function is_gd_image($var) : bool {
return (gettype($var) == "object" && get_class($var) == "GdImage");
}
【讨论】: