get_classの引数がNULLの時の仕様で嵌った件
デバッグ時にget_classを良く使うのだけど。
http://jp2.php.net/get_class
返り値
オブジェクト object がインスタンス であるクラスの名前を返します。object がオブジェクトでない場合にはFALSEが返されます。
クラスの内部で object を省略すると、 そのクラスの名前を返します。
これ、PHP5.3で嵌りました。
<?php class Hoge{ function Hoge($hoge = null) { var_dump($hoge, get_class($hoge), get_class()); } } new Hoge(); ?>
この出力は
php5.2
NULL
bool(false)
string(4) "Hoge"
まぁ予想通り。
しかし・・・
php5.3
ちょ、NULL渡されてその実行時関数のクラス名を返されても困るんですが・・・。
PHPのバグレポに報告が挙がっていた。
PHP5.2と5.3では違うみたい。
http://bugs.php.net/bug.php?id=52605
cataphract@php.net/degeberg@php.netによるとDocumentが未整備ということで、今は直ってる(Documentがね)。
要はここの場所
5.3.0 以降 NULL が object のデフォルトとなりました。 したがって、NULL を object に渡すのは何も指定しないのと同じ意味ということになります。
うむむー。
確かにそのとおりである。バグではない。
しかし、やられてしまた。