Laravel和变量命名约定(蛇格+骆驼格)


Laravel and variable naming conventions (snake case + camel case)

我们遵循Laravel标准,将模型属性命名为snake_case_variables。尽管Laravel只是我们系统中与Javascript前端和许多其他应用程序进行对话的API层。

API的所有消费者都非常喜欢采用骆驼大小写的变量(例如javascript/Rect)。

我们发现很难将核心模型属性(如created_at、updated_at、confirmation_password、模型关系等)更改为snake case。

我们已经玩过wth并实现了转换层来改变"外壳"的进出,尽管这只是增加了维护和开发人员需要记住的另一件事。。。

我们如何轻松地将所有模型属性、关系和一般的Laravel绑定转换为骆驼格

我不推荐它,因为它更改了laravel的核心,因此它修改了供应商文件,在不丢失更改的情况下更新起来并不容易,但我认为最简单的方法是用修改后的版本替换vendor''laravel''framework''src''illumination''Support''Str.php。laravel从该文件中的方法对studly、camel-case、snake等执行所有字符串修改。遍历函数会改变函数的执行方式,但我认为这没有意义,因为方法名称与它们正在执行的内容不匹配。

最好但最困难的方法是进入正在使用Str类中方法的每个文件,并根据您的需要进行修改,这将是有意义的,但需要做大量工作来更改正在使用的方法。

从这些文件中更改所需的值。

请参阅vendor''laravel''framework''src''Database''Eloquent''Model.php您还可以看到这些值是在此处设置的,用于从模型中进行检查。

public static $manyMethods = ['belongsToMany', 'morphToMany', 'morphedByMany'];
const CREATED_AT = 'created_at';
const UPDATED_AT = 'updated_at';

请参阅vendor''laravel''framework''src''Database''Schema''Blueprint.php您还可以看到这些值是在此处设置的,用于从创建迁移和删除迁移进行检查。例如创建时间戳的那个。

public function timestamps()
{
    $this->timestamp('created_at')->nullable();
    $this->timestamp('updated_at')->nullable();
}

您绝对应该看看Mappable。我们遇到了同样的问题,这解决了它。您可以将snake_case映射到CamelCase名称,甚至可以在QueryBuilder中使用它们。