首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
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

Stack Overflow用户

发布于 2012-01-25 21:33:34

你实际上可以用cast to bool来解决你的问题

代码语言:javascript
运行
复制
public function isLoggedIn()
{
    return (bool) $this->user;
}

在PHP中,每个对象都是TRUE,而NULLFALSE

你最初提出的关于“什么更快”的问题通常不会起到任何重要作用。更重要的是,你可以很容易地阅读你的代码,其中包括不编写不必要的代码,特别是因为你猜测当月球处于特定阶段时,某些东西可能会更快。

你不知道两件重要的事情:我的代码太慢了吗?哪一个更快?如果你根本不能回答第一个问题,那么就别想问第二个问题。

你只是把一些你永远不会用到的东西放在你的大脑里。这就是a common mistake inexperienced programmers do,所以你越早停止使用它,你就会越快地得到你可以使用的结果。而且,你越容易从头开始保存你的代码,你运行的瓶颈就越少。你将会遇到的那些问题对你来说不是问题,因为没有太多的改变来消除性能消耗。听起来很公平?

票数 1
EN
查看全部 5 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8989961

复制
相关文章

相似问题

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