1. ホーム
  2. php

[解決済み] call_user_func() は、パラメータ 1 が有効なコールバックであることを期待します。

2022-02-04 11:45:50

質問

PHPのcall_user_func関数で遊んでいるのですが、この簡単なコードを実行すると、このエラーが発生します。

<?php


class A
{

    public $var;
    private function printHi()
    {

        echo "Hello";   

    }

    public function __construct($string)
    {
        $this->var = $string;   


    }

    public function foo()
    {

        call_user_func($this->var); 

    }

}

$a = new A('printHi');
$a->foo();


?>

クラスの外にprintHiという関数を作るとうまくいくのはわかるのですが、クラスのprint hiを参照しているので、なぜ"this"が登録されないのかがわかりません。

どうすればいいですか?

$this->var が評価されるのは printHi の例では しかし、クラスのメソッドを呼び出す場合は、コールバックを配列で渡す必要があります。配列の最初の要素はオブジェクトのインスタンスで、2番目の要素は関数名です。

call_user_func(array($this, $this->var));

以下は、有効なコールバックに関するドキュメントです。 http://www.php.net/manual/en/language.types.callable.php