get("myVar"); -6ren">
gpt4 book ai didi

php - symfony2 测试/获取 session 属性的最佳方式

转载 作者:行者123 更新时间:2023-12-05 03:13:20 26 4
gpt4 key购买 nike

我这样做是为了在我的代码中测试和获取 session 属性:

if ($session->has("myVar")) {
$myVar = session->get("myVar");
/* do something */
}

但是,我阅读了 session 的代码并且:

 /**
* 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 */
}

或者使用 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 ,我不使用它,主要是因为我不熟悉,但是,如果它不是更快,我不需要它。

您能否确认,第三是最好的,如果不是,为什么,以及如何做到最好?

最佳答案

这取决于您想要实现的目标。

第一个选项

if ($session->has("myVar")) {
$myVar = session->get("myVar");
/* do something */
}

如果你想确定这个 var 是否已设置,这是有意义的,如果没有,你真的想设置它或做任何其他事情。它假定必须存在此 session 变量

第二个选项

$myVar = $session->get("myVar");

这是有道理的,如果您愿意接收预期的结果,或者如果未设置则默认为空值。

建议:

$myVar = $session->get("myVar");
if (null === $myVar) {
/* do something */
}

第三种选择

$myVar = $session->get("myVar", false);

如果未设置此 session 变量,这将允许您覆盖默认值

建议:

$myVar = $session->get("myVar", false);
if (!$myVar) {
/* do something */
}

所以,在我看来,这取决于你想做什么。但是没有您要求的最好或最坏的方法,因为它们彼此不同。

关于php - symfony2 测试/获取 session 属性的最佳方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30641169/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com