is_object()
and
Incomplete Classes
Even though we think that incomplete classes are not object
instances, PHP –as of version 7.2– tends to disagree with us. Before
PHP 7.2, when calling is_object()
on an incomplete
class, you would get false
as a result. Now the answer
is true
. We think that this is at least arguable, since
you are unable to call methods on incomplete classes, but still this
is how PHP behaves today:
$object = unserialize(
"O:9:\"Something\":1:{s:14:\"\000Something\000foo\";i:42;}"
);
var_dump($object);
var_dump(is_object($object));
The result is:
class __PHP_Incomplete_Class#1 (2) {
public $__PHP_Incomplete_Class_Name => string(9) "Something"
private $foo => int(42)
}
bool(true)