php中的return null,php - `return $ this-> foo()=== null'是什么意思? - 堆栈内存溢出...

这篇博客探讨了PHP中方法默认返回值的概念,特别是当涉及到布尔值判断时。文章通过一个示例代码解释了`getIsGuest`方法如何总是返回`false`,因为它依赖于`getState`方法返回的值与`null`的比较。文中还提到了`===`和`==`在比较中的区别,并提供了一个修改后的代码片段以清晰展示这一过程。
摘要由CSDN通过智能技术生成

这并不是一个很好的示例,但是它没有默认值。 你可以肯定的是什么,就是getIsGuest方法将总是返回一个布尔值(或true或false )。 在您的代码段中,它将始终返回false,因为它使用另一个方法的返回值( getState )并将其严格地与null (值和类型)进行比较。 由于在您的示例中getState成员函数经过硬编码以返回char,因此它绝不会返回null,因此, getIsGuest将始终返回false。

对于没有显式return语句的所有函数或方法(对于可能返回构造函数实例的构造函数除外),PHP将null作为其默认返回值。 就像JS在默认情况下会返回undefined (再次是构造函数除外)一样,或者C函数可以返回void ,但这是另一回事。

简而言之:不,您的代码未设置默认返回值。 我将尝试通过稍微修改一下代码片段来澄清所有这些问题:

class md

{

private $_mdData = array();//no data

public function __construct(array $params = null)//default value of $params is null

{//the constructor expects either no parameters, or an array

if ($params !== null)

{

$this->_mdData = $params;

}

if($this->getIsGuest())

{

echo 'I\'m guest';

}

}

public function getIsGuest()

{

return $this->getState('__id') === null;

}

public function getState($val)

{//return whatever value is stored in the private array under $val-key

//if the key doesn't exist, null is returned

return (isset($this->_mdData[$val]) ? $this->_mdData[$val] : null);

}

}

$guest = new md();//no params

构造函数调用getIsGuest,它尝试访问$ mdData [' _id']

$ _mdData为空,因此键不存在,并且null返回给getIsGuest。

getIsGuest将返回值(null)与null进行比较,并返回true(因为它们相同)

构造函数接收到true,因为在那是调用getIsGuest方法的地方,并评估if ($this->getIsGuest()) -> true的值,所以回显了I'm a guest 。

$nonGuest = new md(array('__id'=>123));//same drill, only this time getState will return 123, and getIsGuest returns false

现在==和===之间的区别:

$nullish = new md(array('__id' => ''));

这不会回应我是客人, 除非您要更改return $this->getState('__id') === null; return $this->getState('__id') == null; 因为''一个空字符串为空,例如0代表虚假等...

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值