Calling get_class() without arguments is deprecated¶
Description¶
get_class() used to allow its usage without an argument. Then, it would return the current class context, at compile time. Hence, in the code here, it used to return x
, may it be called from x
or y
.
This behavior is not allowed anymore, and will be removed in PHP 9.
Note that calling get_class without an argument was different from calling get_class with the null
value.
Example¶
<?php
class X {
function foo() {
echo get_class(); // x
echo get_class($this); // y
// echo get_class(null); // Type error
}
}
class Y extends X {}
echo (new Y)->foo();
?>
Solutions¶
Use the __CLASS__ constant to get the name of the class at compile time.
Use the
get_class($this)
call, to get the name of the class at execution time.