ソースコードを読んでいると、以下のようなコードにぶち当たりました。
public function read()
{
if ($this->_user !== null) {
return $this->_user ?: null;
}
$this->_user = $this->_session->read($this->_config['key']) ?: false;
return $this->_user ?: null;
}
"?: " これってなんでしょう?
どうやら、三項演算子の、真の場合に評価する式が存在しないもののようです。
つまり、
$this->_user ?: null;
の場合、"$this->_user"が存在しない場合は、nullを返すようです。
では、存在した場合は何を返すかというと、このコード見ていると、何も返さないように見えないですね。
"$this->_user"の内容を返すように見えます。
では、実験して見ます。
実行環境は、環境用意するのがめんどいので、以下の環境を使いました。
では、以下のようなソースコードを書いて見ます。
<?php
// Here your code !
$flag = "hello";
echo $flag ?: "false";
$falseflag = false;
echo $falseflag ?: "false"
?>
実行結果は以下のようになります。
hellofalse
つまり、
echo $flag ?: "falseです";
は、\$flagがfalse,0,"",nullの時は、"falseです"の結果を表示し、それ以外の\$flagに何か入っている時は、\$flagの内容を表示するようです。
三項演算子の変形パターンとして覚えていただければ幸いです。