假设我正在创建一个session类,相关实现如下:
public class Session()
{
private $id;
private $user;
}如果会话已登录,则$user字段包含类型为User的对象;如果会话未登录到站点,则字段为null。$id是会话id。
假设我现在想知道用户是否已登录。显然,我可以检查$user是否为空,如果是,则用户未登录-类似于:
public class Session()
{
private $id;
private $user;
public function isLoggedIn()
{
return !is_null($user);
}
}或者,我可以存储一个布尔会话变量,$loggedIn或其他东西,在登录时设置为false,否则在构造函数中初始化为false以进行测试:
public class Session()
{
private $id;
private $user;
private $loggedIn;
public function isLoggedIn()
{
return $loggedIn;
}
}在这里,一种方法会比另一种方法产生更好的性能吗?如果是,是哪一个,为什么?或者,由于与性能无关的任何原因,其中一种方法比另一种方法更可取吗?
发布于 2012-01-25 00:10:18
越简单越好。如果您引入一个新变量来跟踪$user是否为null,那么您还会引入is_null($user)和$loggedIn不匹配的可能性。避免不得不担心这一点的麻烦比任何可能的微优化更有价值,您可能会在性能上获得更多的优化。
发布于 2012-01-25 00:07:41
在这个用户贡献的帖子(link to post)中检查php.net的基准测试,我们看到==和===比is_null快得多。
发布于 2012-01-25 00:05:10
我想说最好的方法是:
return ($user !== null)
https://stackoverflow.com/questions/8989961
复制相似问题