PHPで静的メソッドを引数として渡す方法【is_callable・call_user_func活用】
PHPでは、is_callable や call_user_func と同じ構文を使って、静的メソッド(スタティックメソッド)を引数として渡すことができます。
静的メソッドをコールバックとして指定するには、ClassName::methodName という形式の文字列、または [ClassName::class, 'methodName'] という配列形式を使用します。まず、基本的な呼び出し可能(callable)判定の例を見てみましょう。
例:is_callableによる呼び出し可能性の確認
<?php
function my_func() {
echo "Hello there!";
}
$variable_name = "my_func";
var_dump(is_callable($variable_name, false, $callable_name));
echo $callable_name, "\n";
var_dump(is_callable($variable_name));
?>
出力結果
上記のコードを実行すると、次のような出力が得られます。
bool(true) my_func bool(true)
is_callable 関数は、第1引数に渡された値が呼び出し可能かどうかを判定し、呼び出し可能であれば true を返します。また、第3引数に変数を指定すると、そこに実際に呼び出せる名前が格納されます。
静的メソッドを引数として渡す実例
次に、クラスの静的メソッドをコールバックとして渡す具体的な例を示します。
<?php
class MyClass {
public static function greet() {
echo "Hello there!";
}
}
// 文字列形式で指定
$callback = 'MyClass::greet';
var_dump(is_callable($callback)); // bool(true)
// 配列形式で指定して呼び出し
call_user_func([MyClass::class, 'greet']); // "Hello there!" と出力される
?>
このように、文字列形式でも配列形式でも静的メソッドを指定できるため、状況に応じて使い分けることができます。特に名前空間を使用している場合は、ClassName::class 定数を使った配列形式の方が可読性が高く、リファクタリングにも強いため推奨されます。
-
PHPのhtmlentities()関数とは?構文・パラメータ・使い方を徹底解説
htmlentities()関数は、適用可能なすべての文字をHTMLエンティティに変換するための関数です。ユーザー入力を安全に表示したい場合や、HTMLタグをそのまま文字列として出力したい場合などに活用され、XSS(クロスサイトスクリプティング)対策としても重要な役割を果たします。構文htmlentities(str, flags, character-set, double_encode)パラメータstr − 変換対象となる文字列を指定します。flags − 引用符の扱い、無効なエンコーディングへの対応方法、および使用するドキュメントタイプを指定します。利用可能な引用スタイルは以下の通りです
-
Java 8のインターフェースで使える静的メソッドの基本と実践例
Java 8におけるインターフェースの静的メソッドとはJava 8以降、インターフェースには静的メソッド(staticメソッド)を定義できるようになりました。これにより、ユーティリティ的なヘルパーメソッドをインターフェース内に直接記述でき、関連する処理をひとまとめに管理しやすくなります。静的メソッドは「インターフェース名.メソッド名()」の形式で呼び出すのが基本です。実装クラスのインスタンスからは直接呼び出せず、オーバーライドもできない点に注意しましょう。静的メソッドを持つインターフェースの定義例次の例では、Vehicleインターフェースにデフォルトメソッド print() と、静的メソッド