【发布时间】:2015-06-04 10:18:12
【问题描述】:
我这样做是为了在我的代码中测试和获取会话属性:
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);
所以,如果没有找到会话属性,则返回“null”。
if ($myVar = $session->get("myVar")) {
/* do something */
}
或者最好用false,如果你有“myVar”但为空,你不能依赖“null”:
if ($myVar = $session->get("myVar", false)) {
/* do something */
}
根据:Null vs. False vs. 0 in PHP
我认为第三个是最好的,在我的实际代码中调用 $session->get,而不是 has 和 get。
我读到了与三元运算符http://fabien.potencier.org/article/48/the-php-ternary-operator-fast-or-not 的替代比较,我不使用它,主要是因为我不熟悉,但是,如果它不是更快,我不需要它。
您能否确认,第三是最好的,如果不是,为什么以及如何做到最好?
【问题讨论】:
-
你到底想测试什么?那是存在的吗?那是存在的,但没有价值?它存在但价值不是你想要的?
-
我必须确保设置了会话属性,并且获取的是值