HasAttributes-Trait中的Laravel代码是无意义的吗?

时间:2018-06-19 10:38:18

标签: php laravel

我看了一下laravel的源代码,发现了以下代码:

    $attributes = $this->addDateAttributesToArray(
        $attributes = $this->getArrayableAttributes()
    );

Source

如您所见,$attributes变量有分配。其中一个在参数列表中。虽然这是有效的语法,但它会立即被“外部”赋值覆盖。

为什么会有人写这样的代码?是否有一种我不知道的特殊行为?

1 个答案:

答案 0 :(得分:1)

您可以在评论中清楚地看到。

  

如果属性是日期,则在将其转换后将其转换为字符串      到DateTime / Carbon实例。这样,我们将获得一些一致性      访问属性时进行格式化,而不是使用数组/对模型进行JSON处理。

第二,这没有什么幻想。但这只是使程序可读的技术。

这里是一个例子。

return new HttPStatus(301);
  • 您能告诉我上面给出的代码在做什么吗?。

    也许您会在google上找到约301 HTTP状态代码,该代码告诉我们301永久移动是用于永久URL重定向。

让我们看看另一个例子。

json_decode($string, true);
  • 您能告诉我我们为什么通过true吗??

  • 这是什么目的??

如果您对json_decode($string, true);不熟悉,您将再次在Google上搜索为什么我们必须在true中通过json_decode()

再举一个例子。

json_decode($string, $returnArray = true);

现在从上面的代码中,您可以清楚地了解如果传递true,它将返回一个数组。 $returnArray = true只是一个可抛弃的变量,可以提高代码的可读性。

情况就是这样

// If an attribute is a date, we will cast it to a string after converting it
// to a DateTime / Carbon instance. This is so we will get some consistent
// formatting while accessing attributes vs. arraying / JSONing a model.
$attributes = $this->addDateAttributesToArray(
    $attributes = $this->getArrayableAttributes()
);

$attributes = $this->getArrayableAttributes()只是一个一次性变量,它告诉我们我们正在传递属性,从而提高了代码的可读性。

希望这会有所帮助。