我发现有多种方法可以访问模型属性:
// In Model Class 1.
public function getUsername()
{
return $this->username;
}
// OR 2.
public function getUsername()
{
return $this->attributes['username'];
}
然后调用方法,
或者只是在需要时简单地调用该属性:
// 3.
$user->username;
这3种方法有什么区别?以及使用哪个?最佳实践、性能和 OOP?
从 OOP 的角度来看,前两个是正确的,因为对于那些使用对象的人来说,对象如何将值返回给你并不重要。 最终,这个 Laravel 机制指向同一个变量,实现也几乎是一样的。
但是第三个是错误的,因为它直接访问属性,因为如果将来需要更改值格式,在返回方法时处理会简单得多。
在 Laravel 中,选项 1 和 2 是多余的,会导致大量多余的样板,选项 3 直接使用 Laravel Eloquent Model 访问器模式访问属性,基本上完成选项 2 所做的事情。而选项 1 只是一个调用选项 3 的 getter。
从纯 OOP 方法的角度来看,选项 3 是有问题的,但如果您使用 Laravel,这是推荐的方法,否则您只是在与框架预期的易用性功能作斗争。