PHP - 将函数传递给另一个函数并调用它

时间:2017-02-20 13:50:16

标签: php function reference

是否可以将函数传递给另一个函数然后调用它? 例如:

class TestController extends Controller
{       
    public function sayHello()
    {   
        echo "Hello";
    }

    public function sayBye()
    {   
        echo "Bye";
    }

    public function say($text)
    {
         if ($text === "Hello") {
                 $this->doChecks($text, $this->sayHello);
         }
         else {
                 $this->doChecks($text, $this->sayBye);
         }
    }

    public function doChecks($text, $callback)
    {
         if (is_string($text)) {
                 $callback();
         }
         else {
             echo "ERROR";
         }
    }
}

如果您say()这样调用say('Hello'),则在sayHello()签入后应执行doChecks(),否则(如果$ text不是字符串) "的错误"应该打印出来。

我得到了什么Undefined property: App\Http\Controllers\TestController::$sayHello

如果您say()这样调用say('somerandomstuff'),则在sayBye()签入后应执行doChecks(),否则(如果$ text不是字符串) "的错误"应该打印出来。

我得到了什么Undefined property: App\Http\Controllers\TestController::$sayBye

如果我尝试传递这样的函数地址:

 public function doChecks($text, &$callback)

然后我得到Function name must be a string,如果我在doChecks内输出带回声的$ callback,就像这样:echo "'$callback'";然后我得到''

它是如何运作的?

0 个答案:

没有答案