概述
我一直在尝试使用PHP
学习的一些功能,昨晚我正在处理匿名函数,并且出于某种奇怪的原因,我var_dump
编辑了它一直返回的函数null
。
守则
以下是我写的代码。
findOrFail
函数,
public static function findOrFail($iD, $successCallback = null, $failCallback = null)
{
$db = new Database();
$db->select("users")->fields(["*"])->where(["id" => $iD])->execute("select");
if ($db->rowCount() == 1) {
if (is_callable($successCallback)) {
return $successCallback();
} else {
return true;
}
} else {
if (is_callable($failCallback)) {
return $failCallback($iD);
} else {
return false;
}
}
}
在 test.php 中,
require_once "config.php";
var_dump(User::findOrFail(1, function () {
echo "Found.";
}, function ($iD) {
echo "Failed.";
}));
输出
ID 1 exsits所以我希望在转储字符串和内容为“Found”时看到。但是我看到了这个:
Found.NULL
我尝试了什么?
我看了另一个与这个问题有关的问题,并说
这是因为有一个bug PHP
版本(5.3?)。所以我查了一下
PHP
版本, 5.5.8 。
我想也许是因为默认参数($successCallback
和$failCallback
)设置为等于null
,可能导致错误发生。但是,对代码的一些快速更改(删除null
)表明它没有修复任何内容。
所以我的问题是,为什么显示为null?如果有人能够对这个问题有所了解,那将非常感激。
答案 0 :(得分:2)
您的匿名函数不会返回任何内容,只需调用echo
即可打印。使用:
return "Found";
和
return "Failed";