为什么在laravel信息包中有两种相同的方法?
我正在阅读关于为什么在laravel信息包中有两种相同的方法?,laravel,Laravel,我正在阅读关于messagebag的laravel文档。在那里我找到了any()和isNotEmpty()方法。他们俩做的事情完全一样。他们试图确定是否有任何消息,如果有则返回true。我去看了源代码,发现isNotEmpty()除了调用any()方法外什么都不做 public function isNotEmpty() { return $this->any(); } public function any() { return $this->count() &g
messagebag
的laravel
文档。在那里我找到了any()
和isNotEmpty()
方法。他们俩做的事情完全一样。他们试图确定是否有任何消息,如果有则返回true。我去看了源代码,发现isNotEmpty()
除了调用any()
方法外什么都不做
public function isNotEmpty()
{
return $this->any();
}
public function any()
{
return $this->count() > 0;
}
我不明白的是为什么拉威尔在两个地方做同样的事情?一种方法不足以胜任这项工作吗 你是对的,两种方法中的一种就足够了。这两种方法存在的原因也不是单一的,但我想以下(甚至可能更多)的组合是我们使用它们的原因:
方法早在any()
之前就已经存在了,而且在isNotEmpty()
旁边总是有一个any()
方法(作为反向方法)isEmpty()
- 因为
是一个比isNotEmpty()
更明显的方法名,所以它是在几年前添加的any()
- 为了向后兼容,并且因为
的实现非常简单,所以从来没有一个很好的理由删除any()
any()
isNotEmpty()
如if($messages->isNotEmpty()){…}
比if($messages->any()){…}
长得多,但对我来说它似乎更具可读性和可理解性。但并不是每个人都这么认为,我最好的猜测是,在框架维护人员小组中,有一个any()
的粉丝,他们不想写得太多