我有一个类接受GD图像资源作为其参数之一。据我所知,没有办法输入提示,因为它是一个资源,而不是一个对象。有没有办法验证提供的参数是否是有效的GD图像资源(除了使用此资源失败的进一步功能)?
PS:请不要在答案中提及ImageMagick ......
答案 0 :(得分:8)
get_resource_type()返回“gd”,这就是你需要的。
答案 1 :(得分:7)
get_resource_type功能可以帮助你。如果没有编写代码并查看它返回的内容,我不确定它对于GD资源会说些什么,所以你自己就在那里。不过应该是一个很好的起点!
答案 2 :(得分:2)
从 PHP 8.0 开始,带有 get_resource_type
图像参数的 GD
将抛出一个 Fatal Error
:
PHP 致命错误:Uncaught TypeError: get_resource_type(): Argument #1 ($resource) must be of type resource, GdImage given.
我们应该使用 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");
}