【问题标题】:Laravel: Should I stick with camel case names for Eloquent relationship methods?Laravel:对于 Eloquent 关系方法,我应该坚持使用驼峰式名称吗?
【发布时间】:2018-04-01 09:04:09
【问题描述】:

Laravel 鼓励我们使用 snake_case,例如first_name,用于模型属性名称。特别是,当使用蛇形案例从类外部访问属性时,它会自动查找名为 getFirstNameAttribute 的访问器。

然而,当涉及到模型关系时,使用驼峰式似乎更自然。例如,如果一个体育场有多个接入点,那么stadium 类可能有一个accessPoints() 方法。我可以将此方法调用为属性 ($stadium->accessPoints) 以检索访问点列表,也可以将其调用为方法 ($stadium->accessPoints()) 以获取底层查询构建器的实例。

这与我通常处理命名约定的方式不同。我通常会使用相同的大小写(snake_case 或 camelCase)命名属性,而不管属性是如何实现的。

我现在正在着手一个大型 Laravel 项目。我应该坚持使用这两种不同的语法,还是可能会后悔?

【问题讨论】:

  • 关系方法名使用 camelCase,属性使用snake_case。

标签: laravel eloquent


【解决方案1】:

没有真正的约定,就像刺客信条所说的那样,

“没有什么是真的,一切都是允许的”

Laravel 遵循 PSR-2 编码标准。来源:https://laravel.com/docs/5.5/contributions

这会将我们重定向到https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-1-basic-coding-standard.md

(来自https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-2-coding-style-guide.md,其中说:代码必须遵循 PSR-1 中列出的所有规则。

上面写着:

无论使用什么命名约定,都应该在合理的范围内一致地应用。该范围可能是供应商级别、包级别、类级别或方法级别。

根据该声明,这与环境级别约定之间的分离有关,例如数据库设计约定和代码约定。大多数数据库设计约定鼓励蛇形列名,大多数代码约定使用驼峰式方法名、类名等。

在定义模型时,为了声明模型属性与数据库列相关,编码约定从 camelCase 更改为 snake_case

【讨论】:

    【解决方案2】:

    嗯,这是一个约定,所以你应该使用你更习惯的方法。

    我个人只对列属性使用snake_case,对其他所有内容(类名、关系ecc)使用camelCase。

    请注意,对于类名和方法,camelCase 基本上是必需的,因为所有 laravel 和外部模块的类和方法都使用 camelCase。如果你使用snake_case,你在snake_case中实现的一些方法和camelCase中的框架方法会很乱。

    对于关系,你基本上只会使用自己定义的关系,所以我相信你真的可以选择你喜欢的。

    【讨论】:

      猜你喜欢
      • 2010-12-09
      • 2017-06-26
      • 1970-01-01
      • 2021-04-29
      • 1970-01-01
      • 2019-07-09
      • 2021-01-16
      • 1970-01-01
      • 2011-06-14
      相关资源
      最近更新 更多