首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >哪个更快-布尔变量检查和is_null()?

哪个更快-布尔变量检查和is_null()?
EN

Stack Overflow用户
提问于 2012-01-25 00:02:42
回答 5查看 2.8K关注 0票数 3

假设我正在创建一个session类,相关实现如下:

代码语言:javascript
运行
复制
public class Session()
{
    private $id;
    private $user;
}

如果会话已登录,则$user字段包含类型为User的对象;如果会话未登录到站点,则字段为null。$id是会话id。

假设我现在想知道用户是否已登录。显然,我可以检查$user是否为空,如果是,则用户未登录-类似于:

代码语言:javascript
运行
复制
public class Session()
{
    private $id;
    private $user;

    public function isLoggedIn()
    {
        return !is_null($user);
    }
}

或者,我可以存储一个布尔会话变量,$loggedIn或其他东西,在登录时设置为false,否则在构造函数中初始化为false以进行测试:

代码语言:javascript
运行
复制
public class Session()
{
    private $id;
    private $user;
    private $loggedIn;

    public function isLoggedIn()
    {
        return $loggedIn;
    }
}

在这里,一种方法会比另一种方法产生更好的性能吗?如果是,是哪一个,为什么?或者,由于与性能无关的任何原因,其中一种方法比另一种方法更可取吗?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2012-01-25 00:10:18

越简单越好。如果您引入一个新变量来跟踪$user是否为null,那么您还会引入is_null($user)和$loggedIn不匹配的可能性。避免不得不担心这一点的麻烦比任何可能的微优化更有价值,您可能会在性能上获得更多的优化。

票数 6
EN

Stack Overflow用户

发布于 2012-01-25 00:07:41

在这个用户贡献的帖子(link to post)中检查php.net的基准测试,我们看到=====is_null快得多。

票数 10
EN

Stack Overflow用户

发布于 2012-01-25 00:05:10

我想说最好的方法是:

return ($user !== null)

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8989961

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档