我不懂如何定义一个 PHP 函数

今天升级升级laravel框架后报出?语法错误,找到代码一看函数的传递参数 前面有一个 ‘?’,看不懂了知识盲区,太久没有更新知识库了

可选参数 VS 可空参数

可选参数

可选参数可以理解为函数运行时可以传也可以不传的参数,如:

function getName($name =''){
  return $name;
}
getName(); // 返回 ''
getName('Hello'); // 返回 Hello

这个经常使用到就不必多说了。

可空参数

可空参数怎么理解,和可空参数有什么区别呢?代码如:

function nullableParameter(?string $name)
{
    return $name;
}

echo nullableParameter(null); // 不会返回任何东西
echo nullableParameter('Nauman'); // Nauman
echo nullableParameter(); // 致命错误
function nullableParameterWithReturnType(?string $name) : string
{
    return $name;
}
echo nullableParameter(null); // 致命错误,必须返回 string 类型
echo nullableParameter('Nauman'); // Nauman
function nullableReturnType(string $name) : ?string
{
    return $name;
}
echo nullableParameter(null); // 致命错误,$name 应该是 string 类型
echo nullableParameter('Nauman'); // Nauman

显然,可空参数不是可选参数,你必须传递一个值或者是null

留下你的脚步