is_callable

関数の概要

PHPの is_callable 関数は、指定した変数が「コールバック可能(呼び出し可能)」かどうかを調べるための関数です。コールバック可能とは、関数名やメソッド名、無名関数(クロージャ)などの形で呼び出せるかどうかを意味します。動的に関数やメソッド名を扱う場合など、実行前に安全に呼び出し可能か判定したいときに役立ちます。

パラメータの説明

  • callable(必須): チェック対象の変数。関数名(文字列)、配列(クラス名とメソッド名)、無名関数などを指定できます。
  • syntax_only(省略可能): boolean。デフォルトは false
    true にすると、実際の呼び出し可能かどうかは判断せず、シンタックス的に呼び出し可能そうかだけを判定します。通常は false のままで使います。
  • callable_name(省略可能): string の変数を指定すると、判定対象のコールバックの名前がそこに代入されます。

戻り値

is_callable は、指定された値がコールバックとして呼び出し可能な場合は true を返し、そうでない場合は false を返します。

使用例

基本的な使い方

<?php
function sayHello() {
    echo "Hello!";
}

if (is_callable('sayHello')) {
    sayHello();  // 実行される
}
?>

この例では、文字列の関数名 sayHello が呼び出せるかを判定し、可能なら実際に呼び出しています。

配列でクラスメソッドを判定

<?php
class Sample {
    public static function staticMethod() {
        echo "Static method called.";
    }
    public function instanceMethod() {
        echo "Instance method called.";
    }
}

if (is_callable(['Sample', 'staticMethod'])) {
    Sample::staticMethod();  // 出力される
}

$sample = new Sample();
if (is_callable([$sample, 'instanceMethod'])) {
    $sample->instanceMethod(); // 出力される
}
?>

クラスの静的メソッドやインスタンスメソッドも、配列形式で呼び出せるか判定できます。

無名関数やクロージャの判定

<?php
$func = function($name) {
    echo "Hello, $name!";
};

if (is_callable($func)) {
    $func('World');  // Hello, World! と表示される
}
?>

無名関数やクロージャも is_callable で判定可能です。

関連する関数

  • function_exists – 文字列の関数名が定義されているか確認
  • method_exists – クラスに指定したメソッドが存在するか確認
  • call_user_func – コールバック関数を動的に実行

まとめ

is_callable は、変数が関数やメソッドとして安全に呼び出せるかどうかをチェックする便利な関数です。動的に関数名やメソッド名を扱う場合や、外部から受け取ったコールバックを安全に利用したいときに活用できます。配列形式のメソッドコールや無名関数にも対応しているため、幅広い場面で使いやすい機能です。