假设我正在创建一个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 21:33:34
你实际上可以用cast to bool来解决你的问题
public function isLoggedIn()
{
return (bool) $this->user;
}在PHP中,每个对象都是TRUE,而NULL是FALSE。
你最初提出的关于“什么更快”的问题通常不会起到任何重要作用。更重要的是,你可以很容易地阅读你的代码,其中包括不编写不必要的代码,特别是因为你猜测当月球处于特定阶段时,某些东西可能会更快。
你不知道两件重要的事情:我的代码太慢了吗?哪一个更快?如果你根本不能回答第一个问题,那么就别想问第二个问题。
你只是把一些你永远不会用到的东西放在你的大脑里。这就是a common mistake inexperienced programmers do,所以你越早停止使用它,你就会越快地得到你可以使用的结果。而且,你越容易从头开始保存你的代码,你运行的瓶颈就越少。你将会遇到的那些问题对你来说不是问题,因为没有太多的改变来消除性能消耗。听起来很公平?
https://stackoverflow.com/questions/8989961
复制相似问题