ホームページ  >  記事  >  バックエンド開発  >  PHP is_subclass_of function_PHP チュートリアルのバグと解決策

PHP is_subclass_of function_PHP チュートリアルのバグと解決策

WBOY
WBOYオリジナル
2016-07-13 10:29:10787ブラウズ

is_subclass_of:

の役割

コードをコピー コードは次のとおりです:
bool is_subclass_of ( object object, string class_name )

object object が属するクラスがクラス class_name のサブクラスの場合は TRUE が返され、それ以外の場合は FALSE が返されます。戻ってきた。
注: PHP 5.0.3 以降、文字列を使用してオブジェクト パラメーター (クラス名) を指定することもできます。

使用例:

コードをコピー コードは次のとおりです:

#$classNameが$typeのサブクラスかどうかを判断する
is_subclass_of($className,$type);

php5.3.7バージョン以前ではインターフェースにバグが発生します

バグ: https://bugs.php.net/bug.php?id=53727

コードをコピー コードは次のとおりです:

interface MyInterface {}
class ParentClassimplements MyInterface { }
class ChildClass extends ParentClass { }

# true
is_subclass_of('ChildClass', 'MyInterface');
# false
is_subclass_of('ParentClass', 'MyInterface');

解決策:

コードをコピーします コードは次のとおりです:
function isSubclassOf($className, $type){
// $className が属するクラスが $type のサブクラスの場合、TRUE を返します
if ( is_subclass_of($className, $ Type) {re Return True;
}

// PHP バージョン & gt; がインターフェースのバグに存在しない場合、$ className は $ Type のサブクラスではありません
( Version_compare, '5.3.7', ' > ;
}

// リフレクション オブジェクトを作成します
$r = new ReflectionClass($className)
// クラスが $type インターフェイスに属するかどうかをリフレクション オブジェクトを通じて判断します
return $r->implementsInterface($type);
}





http://www.bkjia.com/PHPjc/778999.html
www.bkjia.comtru​​e

http://www.bkjia.com/PHPjc/778999.html技術記事 is_subclass_of の関数: 次のようにコードをコピーします: bool is_subclass_of (object object, string class_name) object object が属するクラスがクラス class_name のサブクラスの場合、戻り値...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。