验证变量是否是有效的GD图像资源的方法?

时间:2011-05-10 22:02:17

标签: php gd type-hinting

我有一个类接受GD图像资源作为其参数之一。据我所知,没有办法输入提示,因为它是一个资源,而不是一个对象。有没有办法验证提供的参数是否是有效的GD图像资源(除了使用此资源失败的进一步功能)?

PS:请不要在答案中提及ImageMagick ......

3 个答案:

答案 0 :(得分:8)

如果资源是gd图像,

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");
}