結局、is_aではなく instanceof演算子で比較するとクラス名とクラス名の比較はしないという結論に。
<?php public static function getState($option) { // ステートオブジェクトが渡されたらそのものを返す // なぜか$optionに「文字列でクラス名」を指定して is_a をすると、インスタンスでないのに関わらず // クラスとして評価される謎仕様。 instanceof はクラス名ではなく実際にインスタンスかどうかを判定してくれる。 if (($option instanceof Model_ItemState_Interface) == true) { return $option; } }
で、この is_a の仕様、今の5.3.8ではこんなですが5.3.9で「クラス名とクラス名の比較で必ずfalseを返す(デフォルトで)」様にフィックスされたらしいですw
is_aは山ほど使っているので当然リリース前にバージョンアップしたいところですが、5.3.9のリリースが2012/1/10で、2012/2/2に5.3.10がリリースされてると言う、うpして大丈夫かっちゅうシロモノなのでリリース機に入れていいものやら‥‥