anybody's game

日々感じたこと、艦隊これくしょん、千年戦争アイギス、読書記録

オブジェクトが指定のクラスのインスタンスか、継承元まで調べる。

オブジェクトが指定したクラスのインスタンスであればTrueを、違えばFalseを返します。

<?php 
if($obj instanceof 'hogehoge'){}

だと、継承元が指定されたときまでTrueなので・・・

でも、あまり、使う機会ないかな。

<?php
// array is_instance_of($name, $obj, $checkParent)
    function is_instance_of($name, $obj, $checkParent = true)
    {
        $array = array();
        if ($checkParent) {
            $array = get_class_tree($obj);
        } else {
            $array[] = get_class($obj);
        }
        
        return in_array($name, $array);
    }
// array get_class_tree($object)
// ・オブジェクトの継承関係を配列に入れる
    function get_class_tree($obj)
    {
        $classTree = array();
        if (is_object($obj)) {
            $classTree[0] = get_class($obj);
            while ($obj = get_parent_class($obj)) {
                $classTree[] = $obj;
            }
        }
        return $classTree;
    }