PHPのmethod_exists()関数とは?メソッドの存在確認方法をわかりやすく解説
PHPのmethod_exists()関数は、指定したクラスやオブジェクトに特定のメソッドが存在するかどうかをチェックするための組み込み関数です。動的にメソッドを呼び出す前の存在確認など、エラーを防ぎたい場面で非常に役立ちます。
基本構文
method_exists(object, name_of_method)
パラメータ
object − チェック対象となるオブジェクトのインスタンス、またはクラス名(文字列)を指定します。
name_of_method − 存在を確認したいメソッドの名前を文字列で指定します。
戻り値
method_name で指定されたメソッドが、対象のオブジェクト(またはクラス)に対して定義されている場合は TRUE を返します。定義されていない場合は FALSE を返します。
使用例1:オブジェクトインスタンスに対するチェック
次の例では、Directory クラスのインスタンスに対して存在しないメソッド「anything」をチェックしています。
<?php
$directory = new Directory('.');
var_dump(method_exists($directory, 'anything'));
?>出力
bool(false)
使用例2:クラス名を指定したチェック
オブジェクトではなく、クラス名を文字列として直接指定することも可能です。次の例では、Directory クラスに「read」メソッドが存在するかを確認しています。
<?php
var_dump(method_exists('Directory', 'read'));
?>出力
bool(true)
まとめ
method_exists() 関数を使えば、オブジェクトのインスタンスでもクラス名でもメソッドの存在を簡単に確認できます。存在しないメソッドを呼び出そうとすると fatal error が発生するため、可変関数や call_user_func() などで動的にメソッドを実行する前に、この関数でチェックしておくと安全なコードになります。
-
PHPのget_class()関数とは?使い方とサンプルコードを解説
PHPのget_class()関数は、オブジェクトが属するクラス名を取得するための関数です。引数に渡された値がオブジェクトでない場合にはFALSEを返します。また、クラス内部でobject引数を省略して呼び出した場合には、そのクラス自身の名前が返されます。構文get_class(object)パラメータobject − 検査対象となるオブジェクトです。クラスの内部で呼び出す場合は、このパラメータを省略できます。戻り値get_class()関数は、指定されたオブジェクトのクラス名を文字列として返します。引数がオブジェクトでない場合はFALSEを返します。クラス内部
-
PHPのget_object_vars()関数の使い方を徹底解説
PHPのget_object_vars()関数は、指定されたオブジェクトが持つプロパティを取得するための関数です。オブジェクト内で定義されているプロパティを、プロパティ名をキーとした連想配列の形式で返します。 構文 get_object_vars(object) パラメータ object − プロパティを取得したいオブジェクトのインスタンスを指定します。 戻り値 get_object_vars()関数は、指定されたオブジェクトの定義済みプロパティを連想配列として返します。まだ値が代入されていないプロパティについては、NULLが返されます。 なお、この関数をクラスの外部から呼び出した場合、取