protected function is_sub_class_of($class_name, $should, $allow_abstract = false){
        if( class_exists($class_name) ){
            // Check if this is subclass
            $refl = new \ReflectionClass($class_name);
            return ( $allow_abstract || !$refl->isAbstract() ) && $refl->isSubclassOf($should);
        }
        return false;
    }
protected function is_sub_class_of($class_name, $should, $allow_abstract = false){
        if( class_exists($class_name) ){
            // Check if this is subclass
            $refl = new \ReflectionClass($class_name);
            return ( $allow_abstract || !$refl->isAbstract() ) && $refl->isSubclassOf($should);
        }
        return false;
    }
protected function is_sub_class_of ( $ class_name , $ should , $ allow_abstract = false ) { if ( class_exists ( $ class_name ) ) { // Check if this is subclass $ refl = new \ ReflectionClass ( $ class_name ) ; return ( $ allow_abstract || ! $ refl -> isAbstract ( ) ) && $ refl -> isSubclassOf ( $ should ) ; } return false ; }
Detect if specifies class is subclass

@param string $class_name
@param string $should Parent class name
@param bool $allow_abstract Default false
@return bool
Detect if specifies class is subclass