访问器疑问

这里的

this->attributes['total_amount'] / $this->attributes['target_amount'];

this->total_amount/ $this->target_amount;

有什么区别吗?

欲速则不达
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
leo
最佳答案

在这个项目里没有区别。

这是我的编码习惯,在访问器里面除非有特殊需求,否则一律用 $this->attributes['xxx'] 来获取属性值,原因有两个:

  1. 通过 $this->xxx 的方式有可能会获取到别的访问器的值,而不是真正要的原始值;
  2. 如果 $this->xxx 这个也是访问器,也恰巧依赖于当前的访问器,那就会造成死循环。

这种预警式的编程思维可以在一定程度上避免 Bug。

5年前 评论
讨论数量: 3
leo

在这个项目里没有区别。

这是我的编码习惯,在访问器里面除非有特殊需求,否则一律用 $this->attributes['xxx'] 来获取属性值,原因有两个:

  1. 通过 $this->xxx 的方式有可能会获取到别的访问器的值,而不是真正要的原始值;
  2. 如果 $this->xxx 这个也是访问器,也恰巧依赖于当前的访问器,那就会造成死循环。

这种预警式的编程思维可以在一定程度上避免 Bug。

5年前 评论
leo

@Flourishing 举个极端的例子,某个模型有 foo、bar 两个字段

public function getFooAttribute() {
    return $this->bar + 1;
}

public function getBarAttribute() {
    return $this->foo + 1;
}
5年前 评论
leo

在这个项目里没有区别。

这是我的编码习惯,在访问器里面除非有特殊需求,否则一律用 $this->attributes['xxx'] 来获取属性值,原因有两个:

  1. 通过 $this->xxx 的方式有可能会获取到别的访问器的值,而不是真正要的原始值;
  2. 如果 $this->xxx 这个也是访问器,也恰巧依赖于当前的访问器,那就会造成死循环。

这种预警式的编程思维可以在一定程度上避免 Bug。

5年前 评论

@leo 通过 $this->xxx 的方式有可能会获取到别的访问器的值,而不是真正要的原始值;
如果 $this->xxx 这个也是访问器,也恰巧依赖于当前的访问器,那就会造成死循环。
能够举例呢? 老师,我似懂非懂的

5年前 评论
leo

@Flourishing 举个极端的例子,某个模型有 foo、bar 两个字段

public function getFooAttribute() {
    return $this->bar + 1;
}

public function getBarAttribute() {
    return $this->foo + 1;
}
5年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!