【问题标题】:How does this boolean parameter work in laravel php ? And also how does has('completed') work as well这个布尔参数如何在 laravel php 中工作?还有 has('completed') 是如何工作的
【发布时间】:2019-01-13 04:06:30
【问题描述】:

所以我在这里https://laracasts.com/series/laravel-from-scratch-2018/episodes/19 学习本教程,我刚刚遇到

public function complete($completed = true){
    $this->update(compact('completed'));
}

而我的使用方式是这样的,

  public function update(Task $task){

    $task->complete(request()->has('completed'));

    return back();
  }

这个 complete($completed = true) 函数是如何工作的?我对 has() 的工作方式也有点迷茫,它要求检查请求是否有一个带有“已完成”字段的对象?

【问题讨论】:

  • $completed = true 表示如果您不向complete() 方法传递任何内容,则$completed 的默认值将为true。 request() 帮助器只检查当前请求是否具有值 completed
  • 如果有人需要知道 request->has() 的工作原理,这个问题提供了一个好主意stackoverflow.com/questions/29218662/…

标签: php laravel eloquent


【解决方案1】:

$request->has('completed') 开始,request()->has() 检查request() 数据中是否存在键。

它不检查值,所以request()->get('completed') 的值可能是null 或者它可能有一个值,但在这种情况下$request->has('completed') 只返回键是否存在并且不关心价值。

public function completed($completed = true),显然$completed 的值将是request()->has('completed')boolean 响应。

然后您必须了解compact('completed') 将变量$completed 转换为数组['completed'=>true]['completed'=> false]

假设您将 3 个变量 $foo = apple$bar = banana$baz = carrot 传递给 compact('foo','bar','baz'),它会将每个变量及其值转换为一个关联数组,就像 ['foo' => 'apple', 'bar'=>'banana','baz'=>'carrot'] 一样

鉴于上述$this->update(compact('completed'));$this->update(['completed'=>$completed]);基本相同

【讨论】:

  • 公共功能完成($completed = true)。所以我声明 $completed 将是一个布尔值,但为什么不改为 $completed=>false 呢?这是我第一次看到这样的参数,并期望它看起来像这样(bool $completed)
  • 好的,我已经找到了自己的答案。它被称为默认参数值,它的行为类似于php.net/manual/en/functions.arguments.php,如果你能帮助确认 Azeame 会很棒
  • 是的,你是对的,它允许你传递参数但不需要参数
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-16
  • 1970-01-01
  • 2014-01-21
相关资源
最近更新 更多