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

【PHP入門】現在の関数名を取得する方法(__FUNCTION__と__METHOD__の使い方)

PHPで実行中の関数名やメソッド名を取得したい場合、マジック定数を利用するのが最も簡単な方法です。代表的な定数として __FUNCTION____METHOD__ の2種類があり、それぞれ出力される内容が異なります。

__FUNCTION__で関数名を取得する

まずは、__FUNCTION__ を使って現在の関数名を取得する例を見てみましょう。

<?php
    class Base {
        function display() {
            echo "\nBase class function declared final!";
            var_dump(__FUNCTION__);
        }
        function demo() {
            echo "\nBase class function!";
        }
    }
    class Derived extends Base {
        function demo() {
            echo "\nDerived class function!";
        }
    }
    $ob = new Base;
    $ob->demo();
    $ob->display();
    $ob2 = new Derived;
    $ob2->demo();
    $ob2->display();
?>

実行結果

Base class function!
Base class function declared final!string(7) "display"
Derived class function!
Base class function declared final!string(7) "display"

var_dump(__FUNCTION__) の結果として、文字列型・7バイトの "display" が出力されていることがわかります。__FUNCTION__クラス名を含まない、関数またはメソッド名のみを返します。

__METHOD__でクラス名付きのメソッド名を取得する

次に、__METHOD__ を使用した例です。こちらは「クラス名::メソッド名」の形式で返される点が特徴です。

<?php
    class Base {
        function display() {
            echo "\nBase class function declared final!";
            var_dump(__FUNCTION__);
        }
        function demo() {
            echo "\nBase class function!";
            var_dump(__METHOD__);
        }
    }
    class Derived extends Base {
        function demo() {
            echo "\nDerived class function!";
        }
    }
    $ob = new Base;
    $ob->demo();
    $ob->display();
    $ob2 = new Derived;
    $ob2->demo();
    $ob2->display();
?>

実行結果

Base class function!string(10) "Base::demo"
Base class function declared final!string(7) "display"
Derived class function!
Base class function declared final!string(7) "display"

demo() メソッド内での var_dump(__METHOD__) の結果が string(10) "Base::demo" となっている点に注目してください。このように、どのクラスに属するメソッドかを特定したい場合には __METHOD__ が便利です。

__FUNCTION__と__METHOD__の違いまとめ

マジック定数戻り値
__FUNCTION__関数名・メソッド名のみ(例:display)
__METHOD__クラス名付きのメソッド名(例:Base::demo)

なお、これらはコンパイル時に解決されるため、変数のように動的に値を変更することはできません。デバッグ時のログ出力やエラーメッセージの生成など、実行箇所の特定が必要な場面で活用すると効果的です。

  1. 【Android】デバイスの現在のBluetooth名を取得して表示する方法

    はじめに この記事では、Androidアプリでデバイスの現在のBluetooth名(デバイス名)を取得し、画面に表示する方法を解説します。Bluetooth名は、他の端末とペアリングする際などに使用される識別名であり、BluetoothManagerを使えば簡単に取得できます。 ステップ1:新規プロジェクトの作成 まず、Android Studioで新しいプロジェクトを作成します。メニューから「File」→「New Project」を選択し、必要な項目を入力してプロジェクトを生成しましょう。 ステップ2:レイアウトファイルの編集 次に、res/layout/activity_main.xml

  2. 【Android】現在のスレッド名を取得して表示する方法をわかりやすく解説

    スレッドとは? まず、スレッドについて簡単におさらいしておきましょう。スレッドとは軽量なサブプロセスのことで、UI(ユーザーインターフェース)の動作を妨げることなくバックグラウンド処理を実行するために使われます。Androidアプリ開発では、時間のかかる処理を別スレッドに分離することで、画面のフリーズやANR(Application Not Responding)エラーを防ぐことができます。 本記事では、Androidアプリで現在実行中のスレッドの名前を取得して表示する方法を、サンプルコード付きで解説します。 手順1:新規プロジェクトを作成する Android Studioを起動し、メニューか