get_class_methods

関数の概要

get_class_methods は、指定したクラス名またはオブジェクトのメソッド一覧を配列で取得するPHPの組み込み関数です。クラスやオブジェクトの公開メソッド(パブリックメソッド)を取得できるため、リフレクションの簡易的な代替として利用されることが多いです。

パラメータの説明

  • class(文字列またはオブジェクト):メソッド一覧を取得したいクラス名の文字列、またはそのクラスのインスタンス(オブジェクト)を指定します。

戻り値

指定したクラスまたはオブジェクトに存在するメソッド名の配列を返します。なお、継承元のパブリックメソッドも含まれます。もし指定したクラスが存在しない場合や引数が無効な場合は false を返します。

使用例

基本的な使い方

<?php
class Sample {
    public function firstMethod() {}
    protected function secondMethod() {}
    private function thirdMethod() {}
    public function fourthMethod() {}
}

$methods = get_class_methods('Sample');
print_r($methods);
?>

このコードは、クラス Sample のパブリックメソッドのみを取得し、配列で出力します。結果は firstMethodfourthMethod のみが表示されます。

オブジェクトからメソッド一覧を取得する

<?php
class User {
    public function login() {}
    public function logout() {}
    private function encryptPassword() {}
}

$user = new User();
$methods = get_class_methods($user);
var_dump($methods);
?>

User クラスのオブジェクト $user から直接メソッド一覧を取得しています。返される配列には loginlogout のみが含まれます。

親クラスから継承したメソッドも取得できる

<?php
class ParentClass {
    public function parentMethod() {}
}

class ChildClass extends ParentClass {
    public function childMethod() {}
}

$methods = get_class_methods('ChildClass');
print_r($methods);
?>

この例では、子クラス ChildClass で定義したメソッドだけでなく、親クラス ParentClass のパブリックメソッド parentMethod も含まれた配列が返されます。

関連する関数

  • get_class – オブジェクトのクラス名を取得する
  • method_exists – クラスまたはオブジェクトに特定のメソッドがあるか確認する
  • get_class_vars – クラスのプロパティ一覧を取得する
  • ReflectionClass – クラスの詳細情報を取得するためのリフレクションクラス

まとめ

get_class_methods は、クラスやオブジェクトのパブリックメソッド一覧を簡単に取得できる便利な関数です。特に実務でクラスの構造を動的に確認したり、メソッドの存在チェックと組み合わせて柔軟な処理を書く際に役立ちます。メソッドのアクセスレベルによって取得される範囲が限られる点や、継承も含めて取得される点を理解して使いこなしましょう。