Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么在laravel信息包中有两种相同的方法?_Laravel - Fatal编程技术网

为什么在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()
的粉丝,他们不想写得太多