簡體   English   中英

Laravel和變量命名約定(蛇案+駱駝案)

[英]Laravel and variable naming conventions (snake case + camel case)

我們遵循Laravel將模型屬性命名為snake_case_variables的標准。 雖然Laravel只是我們系統中的API層,它與Javascript前端和許多其他應用程序進行對話。

我們API的所有消費者都非常喜歡使用駝峰變量(例如javascript / React)。

我們發現很難將核心模型屬性(例如created_at,updated_at,confirmation_password,模型關系等)更改為snake case。

我們已經玩弄並實施了變換層來改變進出的“套管”,雖然這只會增加維護和開發人員記住的另一件事......

我們如何輕松地將所有模型屬性,關系和一般Laravel綁定轉換為駝峰案例?

我沒有推薦,因為它改變了laravel的核心,因此它修改了供應商文件,並且在不丟失更改的情況下更新並不容易,但我認為最簡單的方法是更換供應商\\ laravel \\ framework \\ src \\ illuminate \\ Support \\ Str.php帶有修改版本。 laravel對此文件中的方法執行對studly,camel case,snake case等的所有字符串修改。 通過函數改變函數的執行方式,但我不認為它會有意義,因為方法名稱與它們正在執行的內容不匹配。

最好但很難的方法是進入正在使用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中使用它們。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM