関数・クラス解説

is_subclass_of

version:PHP 4, PHP 5, PHP 7 (公式)

あるオブジェクトが指定したクラスのサブクラスに属するか (あるいは指定したインターフェイスを実装しているか) どうかを調べる

公式リファレンス

書式

is_subclass_of ( mixed $object , string $class_name [, bool $allow_string = TRUE ] ) : bool

説明

指定した object が、その親のひとつに class_name を持つか (あるいは class_name を実装しているか) どうかを調べます。

パラメータ

object
クラス名あるいはオブジェクトのインスタンス。 そのクラスが存在しなくても、エラーにはなりません。
class_name
クラス名。
allow_string
このパラメータを false にすると、 クラス名を表す文字列を object に指定できなくなります。 そして、クラスが存在しない場合のオートローダーの呼び出しもしなくなります。

返値

この関数は、オブジェクト object が superclass のサブクラスであるクラスに属する場合に TRUE、その他の場合に FALSE を返します。

注意

注意: この関数を使うと、未知のクラスに対しては登録済みのautoloader を使用します。

サンプル

例1 is_subclass_of() の例

// クラスを定義する class WidgetFactory {   var $oink = 'moo'; } // 子クラスを定義する class WidgetFactory_Child extends WidgetFactory {   var $oink = 'oink'; } // 新規オブジェクトを生成する $WF = new WidgetFactory(); $WFC = new WidgetFactory_Child(); if (is_subclass_of($WFC, 'WidgetFactory')) {   echo "yes, \$WFC is a subclass of WidgetFactory\n"; } else {   echo "no, \$WFC is not a subclass of WidgetFactory\n"; } if (is_subclass_of($WF, 'WidgetFactory')) {   echo "yes, \$WF is a subclass of WidgetFactory\n"; } else {   echo "no, \$WF is not a subclass of WidgetFactory\n"; } // PHP 5.0.3 以降で使用可能 if (is_subclass_of('WidgetFactory_Child', 'WidgetFactory')) {   echo "yes, WidgetFactory_Child is a subclass of WidgetFactory\n"; } else {   echo "no, WidgetFactory_Child is not a subclass of WidgetFactory\n"; }

上の例の出力は以下となります。

yes, $WFC is a subclass of WidgetFactory no, $WF is not a subclass of WidgetFactory yes, WidgetFactory_Child is a subclass of WidgetFactory

例2 is_subclass_of() でインターフェイスを使う例

// インターフェイスの定義 interface MyInterface {   public function MyFunction(); } // インターフェイスの実装クラスの定義 class MyClass implements MyInterface {   public function MyFunction()   {     return "MyClass Implements MyInterface!";   } } // オブジェクトのインスタンスを作ります $my_object = new MyClass; // 次の例は 5.3.7 以降で動作します // クラスのインスタンスを調べます if (is_subclass_of($my_object, 'MyInterface')) {   echo "Yes, \$my_object is a subclass of MyInterface\n"; } else {   echo "No, \$my_object is not a subclass of MyInterface\n"; } // クラス名を表す文字列を調べます if (is_subclass_of('MyClass', 'MyInterface')) {   echo "Yes, MyClass is a subclass of MyInterface\n"; } else {   echo "No, MyClass is not a subclass of MyInterface\n"; }

上の例の出力は以下となります。

Yes, $my_object is a subclass of MyInterface Yes, MyClass is a subclass of MyInterface

参考

  • get_class() - オブジェクトのクラス名を返す
  • get_parent_class() - オブジェクトの親クラスの名前を取得する
  • is_a() - オブジェクトがこのクラスのものであるか、このクラスをその親クラスのひとつとしているかどうかを調べる
  • class_parents() - 与えられたクラスの親クラスを返す
  • ワード検索


    ※入力キーワードが、関数名・説明文・タグに含まれるものを検索

    関数名アルファベット別

    A B C D E F G H I J
    K L M N O P Q R S T
    U V W X Y Z _

    最終更新一覧

    stristr
     大文字小文字を区別せず文字列を検索し、ヒット箇所以降(あるいは以前)の文字列を返却

    stripslashes
     バックスラッシュでエスケープされた文字列から、バックスラッシュを取り除く

    stripos
     大文字小文字を区別せずに文字列が最初に現れる位置を取得する

    stripcslashes
     addcslashes() でクォートされた文字列をアンクォートする

    strip_tags
     文字列から HTML と PHP のタグを除去して返却

    strcspn
     指定した文字が最初に現れる位置を調べる

    strcoll
     ロケールに基づいて2つの文字列を比較し同じか(あるいは大小)を判定する

    strcmp
     2つの文字列を比較し同じか(あるいは大小)を判定する

    strchr
     strstr() のエイリアス

    strcasecmp
     2つの文字列を比較(大文字小文字を区別せず同じとみなす)

    カテゴリー一覧

    PHP の振る舞いの変更
    音声フォーマットの操作
    認証サービス
    コマンドライン関連
    圧縮およびアーカイブ
    暗号
    データベース関連
    日付および時刻関連
    ファイルシステム
    自然言語および文字エンコーディング
    画像処理および作成
    メール関連
    数学
    テキスト以外の MIME 型
    プロセス制御
    その他の基本モジュール
    その他のサービス
    検索エンジン用の拡張モジュール
    サーバー固有のモジュール
    セッション関連
    テキスト処理
    変数・データ型関連
    ウェブサービス
    Windows 用のモジュール
    XML 操作
    GUI用の拡張モジュール