これはあまり良いサンプルではありませんが、デフォルト値のようなものはありません。確かなことは、getIsGuest
メソッドは常にtrue
ブール値(またはのいずれか)を返すということfalse
です。コードスニペットでは、別のメソッド()の戻り値を使用し、厳密に(値と型)getState
と比較するため、常にfalseを返します。この例では、メンバー関数はcharを返すようにハードコーディングされているため、nullを返すことはなく、したがって常にfalseを返します。null
getState
getIsGuest
PHPにはnull
、明示的なreturnステートメントを持たないすべての関数またはメソッドのデフォルトの戻り値があります(オブジェクトのインスタンスを返すコンストラクターを除く)。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' => ''));
空の文字列が偽物などのようにnullっぽいために変更する場合を除いて、これはゲストです。return $this->getState('__id') === null;
return $this->getState('__id') == null;
''
0