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

dqh*_*cks 6 php gd type-hinting

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

PS:请不要在你的回答中提到ImageMagick ......

ITC*_*ian 15

从 PHP 8.0 开始,get_resource_type使用GD图像参数,将抛出Fatal Error

PHP 致命错误:未捕获类型错误: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");
}
Run Code Online (Sandbox Code Playgroud)


M--*_*M-- 9

如果资源是gd图像,get_resource_type()返回"gd",这就是你需要的.


ste*_*vls 7

函数get_resource_type功能应该可以帮助你.如果没有编写代码并看到它返回的内容,我不确定它对于GD资源会说些什么,所以你自己就在那里.不过应该是一个很好的起点!