是否可以将函数传递给另一个函数然后调用它? 例如:
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'";
然后我得到''
它是如何运作的?