はじめに
PHPのコールバックは、柔軟で強力な機能の一つです。特にクラスのメソッドをコールバックとして扱う際、静的メソッドとインスタンスメソッドでは呼び出し方が少し異なります。本記事では、PHP8で推奨されるコールバックの記述方法を具体例付きで解説します。
PHP8上級試験の問題でも出題されるポイントなので、しっかり理解しておきましょう。
目次
コード例と解説
<?php
declare(strict_types=1);
error_reporting(-1);
class Hoge {
public static function foo() {
echo __METHOD__, "<br>";
}
public function bar() {
echo __METHOD__, "<br>";
}
}
$f = [Hoge::class, 'foo'];
$f();
$f2 = [new Hoge(), 'bar'];
$f2();
declare(strict_types=1);
で型の厳格チェックを有効にし、error_reporting(-1);
で全てのエラー表示をONにしています。Hoge
クラスは静的メソッドfoo
とインスタンスメソッドbar
を持っています。- コールバックとして
- 静的メソッドは
[クラス名, 'メソッド名']
- インスタンスメソッドは
[インスタンス, 'メソッド名']
の形で指定します。
- 静的メソッドは
$f()
、$f2()
の呼び出しで、それぞれ対応したメソッドが実行されます。__METHOD__
は現在実行中のメソッド名を返すマジック定数です。
まとめ
PHPでは、配列形式のコールバックで静的・インスタンス両方のメソッドを柔軟に呼び出せます。
PHP8上級試験の理解を深めるためにも、ぜひ覚えておきたい基礎知識です。