Laravel - 访问模型属性的不同方法

问题描述 投票:0回答:2

我发现有多种方法可以访问模型属性:

// In Model Class 1.
public function getUsername()
{
    return $this->username;
}

// OR 2.
public function getUsername()
{
    return $this->attributes['username'];
}

然后调用方法,

或者只是在需要时简单地调用该属性:

// 3.
$user->username;

这3种方法有什么区别?以及使用哪个?最佳实践、性能和 OOP?

php laravel eloquent model attributes
2个回答
3
投票

从 OOP 的角度来看,前两个是正确的,因为对于那些使用对象的人来说,对象如何将值返回给你并不重要。 最终,这个 Laravel 机制指向同一个变量,实现也几乎是一样的。

但是第三个是错误的,因为它直接访问属性,因为如果将来需要更改值格式,在返回方法时处理会简单得多。


0
投票

在 Laravel 中,选项 1 和 2 是多余的,会导致大量多余的样板,选项 3 直接使用 Laravel Eloquent Model 访问器模式访问属性,基本上完成选项 2 所做的事情。而选项 1 只是一个调用选项 3 的 getter。

从纯 OOP 方法的角度来看,选项 3 是有问题的,但如果您使用 Laravel,这是推荐的方法,否则您只是在与框架预期的易用性功能作斗争。

© www.soinside.com 2019 - 2024. All rights reserved.