转储

时间:2015-09-18 22:31:26

标签: php

概述

我一直在尝试使用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?如果有人能够对这个问题有所了解,那将非常感激。

1 个答案:

答案 0 :(得分:2)

您的匿名函数不会返回任何内容,只需调用echo即可打印。使用:

return "Found";

return "Failed";