我看了一下laravel的源代码,发现了以下代码:
$attributes = $this->addDateAttributesToArray(
$attributes = $this->getArrayableAttributes()
);
如您所见,$attributes
变量有分配。其中一个在参数列表中。虽然这是有效的语法,但它会立即被“外部”赋值覆盖。
为什么会有人写这样的代码?是否有一种我不知道的特殊行为?
答案 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()
只是一个一次性变量,它告诉我们我们正在传递属性,从而提高了代码的可读性。
希望这会有所帮助。