PHP
 Computer >> コンピューター >  >> プログラミング >> PHP

PHPのis_a()関数の使い方を徹底解説!オブジェクトのクラス判定方法

PHPのis_a()関数は、オブジェクトが指定したクラスのインスタンスであるか、あるいはそのクラスを親(祖先)に持つかどうかを判定するための関数です。条件に一致すればTRUE、一致しなければFALSEを返します。

この関数は、インターフェースを実装しているかどうかの確認にも利用できるため、オブジェクト指向プログラミングにおいて型チェックを行う際に非常に便利です。

構文

is_a(object, class)

パラメータ

  • object − 判定対象となるオブジェクトを指定します。

  • class − 判定するクラス名またはインターフェース名を文字列で指定します。

戻り値

オブジェクトが指定したクラスのインスタンスである場合、またはそのクラスを親クラスとして継承している場合はTRUEを返します。それ以外の場合はFALSEを返します。

使用例

以下は、is_a()関数を使ってインターフェースの実装を判定するサンプルコードです。

<?php
interface ClassOne {
    public function Demo();
}
class ClassTwo implements ClassOne {
    public function Demo () {
        print "Demo";
    }
}
$obj = new ClassTwo();
if(is_a($obj, 'ClassOne')) {
    echo "Correct!";
} else {
    echo "Incorrect!";
}
?>

この例では、ClassTwoクラスはClassOneインターフェースを実装しています。そのため、$objに対してis_a($obj, 'ClassOne')と判定すると、ClassTwoはClassOneの実装を持つことになり、TRUEが返されます。

出力結果

Correct!

補足:instanceof演算子との違い

同様の判定にはinstanceof演算子も使えます。instanceofは言語構造であり、クラス名を変数で動的に指定したい場合や、文字列としてクラス名を受け取る場面ではis_a()関数の方が柔軟に対応できます。用途に応じて使い分けるとよいでしょう。

  1. PHPのget_object_vars()関数の使い方を徹底解説

    PHPのget_object_vars()関数は、指定されたオブジェクトが持つプロパティを取得するための関数です。オブジェクト内で定義されているプロパティを、プロパティ名をキーとした連想配列の形式で返します。 構文 get_object_vars(object) パラメータ object − プロパティを取得したいオブジェクトのインスタンスを指定します。 戻り値 get_object_vars()関数は、指定されたオブジェクトの定義済みプロパティを連想配列として返します。まだ値が代入されていないプロパティについては、NULLが返されます。 なお、この関数をクラスの外部から呼び出した場合、取

  2. PHPのclass_exists()関数とは?使い方とサンプルコードをわかりやすく解説

    概要PHPのclass_exists()関数は、指定したクラスがすでに定義されているかどうかをチェックするための関数です。クラスが定義済みであればTRUEを、未定義であればFALSEを返します。プラグインの読み込みや条件分岐によるクラスの動的な利用など、柔軟なプログラミングに役立ちます。構文class_exists(class, autoload)パラメータclass − 存在を確認したいクラスの名前。autoload − デフォルトでオートロード機構(__autoload / spl_autoload_call)を呼び出すかどうか。省略した場合のデフォルト値はTRUE