Way to verify if variable is a valid GD image resource?
I have a class that accepts a GD image resource as one of its arguments. As far as I know, there is no way to type hint this since it is a resource and not an object. Is there a way to validate whether the supplied argument is a valid GD image resource (aside from further functionality using this resource failing)?
PS: Please do not mention ImageMagick i开发者_高级运维n your answer...
The get_resource_type function should help you out. Short of writing code and seeing what it return, I'm not sure what it's going to say for a GD resource, so you're on your own there. Should be a good starting point, though!
get_resource_type() returns "gd" if the resource is a gd image, so that's what you need.
Starting with PHP 8.0, get_resource_type
with a GD
image argument, will throw a Fatal Error
:
PHP Fatal error: Uncaught TypeError: get_resource_type(): Argument #1 ($resource) must be of type resource, GdImage given.
We should use get_class()
function. PHP documentation states:
Explicitly passing null as the object is no longer allowed as of PHP 7.2.0. The parameter is still optional and calling get_class() without a parameter from inside a class will work, but passing null now emits an E_WARNING notice.
So, the correct way to check this, in PHP 8.0 should be:
function is_gd_image($var) : bool {
return (gettype($var) == "object" && get_class($var) == "GdImage");
}
精彩评论