BookmarkLINEPHPには、オブジェクトに関する内部検査機能(情報取得用関数)が組み込まれています。これらを用いると、クラス名や定義されているメソッド、プロパティ、さらには継承元クラスの情報など、オブジェクトの性質をチェックする事が出来ます。今回は、内部検査に関する関数を見ていきます。7全てのバージョンで使用できます。今回のデモ用に以下のサンプルクラスを定義しています。$st2;}is_objectis_object関数は、対象がオブジェクトであるかどうかを確認し返します。)引数に変数を渡し、変数がオブジェクトならtrue、違うならfalseが返ります。falseget_declared_classesget_declared_classes関数は、定義されている全てのクラス名を配列で返します。)今回のデモでは3つのクラスを定義していますが、組み込まれている拡張モジュール等のクラスも既にロードされているので、結果はそこそこの数になります。)class_existsclass_exists関数は、指定したクラスが定義済みであるかどうかを返します。)第一引数にクラス名(文字列)を渡します。第二引数オプションでは、__autoload()をコールする(未定義のクラスのロードを試みる)かを指定できますが、PHP7.2で非推奨になった(autoloaderをチェインできない・spl_autoload_register()と互換性がない)ので使用は避けましょう。trueclass_exists()は、例えば以下のようにして使えます。$class_name;}上記は、指定のクラスが定義されていたらそのクラスをインスタンス化する処理です。get_classget_class関数は、指定オブジェクトのクラス名を返します。)引数にはオブジェクトを渡します。'sample01'get_class_methodsget_class_methods関数は、指定クラスに定義されているメソッド(クラスメソッド)を配列で返します。)引数はクラス名(文字列)もしくオブジェクトを渡します。オブジェクトを渡します。'sampleMethod02'get_class_varsget_class_vars関数は、指定したクラスのデフォルトプロパティを配列で返します。)引数にはクラス名(文字列)を渡します。継承先の親プロパティも取得します。null指定したクラスが基底クラスを継承していればそのプロパティも取得します。get_parent_classget_parent_class関数は、指定クラスの親クラス名を返します。)引数にはクラス名(文字列)もしくはオブジェクトを渡します。オブジェクトを渡します。'sample01'method_existsmethod_exists関数は、クラスメソッドが存在するかどうかを返します。)第一引数にオブジェクトを渡し、第二引数に存在を確認したいメソッド名を渡します。falseget_object_varsget_object_vars関数は、指定したオブジェクトのプロパティを返します。)引数にはオブジェクトを渡します。継承元のプロパティも返ります。publicアクセスのみのプロパティを取得します。null継承しているクラスがある場合は親クラスのプロパティも取得します。プロパティのアクセス修飾子がpublicのものだけを返します。オブジェクトのプロパティを返すという挙動はget_class_vars()と同じですが、get_class_vars関数は引数にクラス名を取りますが、こちらはオブジェクト自体を引数として取ります。まとめPHPの内部検査関数を使えばそのオブジェクトの妥当性を確認できるわけですが、これらを使って汎用的なデバッガやプロファイラを作成したりもできます。動的なオブジェクトの取り回しを連鎖的に行う場合などは、その構造が複雑化するに従って一連の処理の流れからオブジェクトのあるべき形をを見失ってしまいがちなので、要所要所で内部検査を挟んで堅牢な処理を構築していきましょう。SESを使ってAPIメール送信を行う(Mailableクラス&SimpleEmailService)2019.12.3MySQL8.0.16で追加されたCHECK制約を試してみる。RitoLaboこのサイトについて利用規約プライバシーポリシ。