我这样做是为了在我的代码中测试并获取会话属性:
if ($session->has("myVar")) {
$myVar = session->get("myVar");
/* do something */
}
但是,我读了会话代码并且:
/**
* Returns an attribute.
*
* @param string $name The attribute name
* @param mixed $default The default value if not found.
*
* @return mixed
*
* @api
*/
public function get($name, $default = null);
因此,如果找不到session属性,则返回“null”。
if ($myVar = $session->get("myVar")) {
/* do something */
}
或者更好的假,如果你有“myVar”但是空的,你不能依赖“null”:
if ($myVar = $session->get("myVar", false)) {
/* do something */
}
根据:Null vs. False vs. 0 in PHP
我认为第三个是最好的,一个调用$ session-> get,而不是has和get in my actual。
我读到了与三元运算符http://fabien.potencier.org/article/48/the-php-ternary-operator-fast-or-not的替代比较,我不使用它,主要是因为我不熟悉,但是,如果它不快,我不需要它。
你能证实,第三是最好的,如果不是,为什么,以及如何做到最好?
答案 0 :(得分:1)
这取决于你想要达到的目标。
第一个选项
if ($session->has("myVar")) {
$myVar = session->get("myVar");
/* do something */
}
如果你想确定,设置了这个var,如果没有,你真的想要设置它或做其他任何事情,这是有道理的。它假设存在此会话变量是必要的
第二个选项
$myVar = $session->get("myVar");
这个是有意义的,如果您愿意接收预期结果,或者如果没有设置则默认为空值。
建议:
$myVar = $session->get("myVar");
if (null === $myVar) {
/* do something */
}
第三个选项
$myVar = $session->get("myVar", false);
如果未设置此会话变量
,则只允许您覆盖默认值建议:
$myVar = $session->get("myVar", false);
if (!$myVar) {
/* do something */
}
所以,在我看来,这取决于你想做什么。但是你所要求的并没有最佳或最差的方式,因为它们彼此不同。