展開文件目錄

貢獻指南

錯誤報告

為了鼓勵積極的協作,Laravel 強烈建議使用拉取請求,而不僅僅是錯誤報告。拉取請求只有在標記為「準備好審查」(不是「草稿」狀態)且所有新功能的測試都通過時才會進行審查。留在「草稿」狀態的未活動拉取請求將在幾天後關閉。

然而,如果您提交了錯誤報告,您的問題應包含標題和清晰的問題描述。您還應該包含盡可能多的相關信息和展示問題的程式碼示例。錯誤報告的目標是使自己和其他人能夠複製該錯誤並開發修復方案。

請記住,錯誤報告是希望其他遇到相同問題的人能夠與您合作解決。不要期望錯誤報告會自動得到任何活動,或者其他人會立即修復它。創建錯誤報告有助於您和其他人開始解決問題的道路。如果您想參與,您可以通過修復我們問題跟蹤器中列出的任何錯誤來幫忙。您必須使用 GitHub 認證才能查看 Laravel 的所有問題。

如果您在使用 Laravel 時注意到不當的 DocBlock、PHPStan 或 IDE 警告,請不要建立 GitHub 問題。請提交拉取請求來修復問題。

Laravel 的原始碼在 GitHub 上管理,每個 Laravel 專案都有對應的存儲庫:

支援問題

Laravel 的 GitHub 問題追蹤器並不用於提供 Laravel 的幫助或支援。請改用以下其中一個管道:

核心開發討論

您可以在 Laravel 框架存儲庫的 GitHub 討論區 中提出新功能或改進現有 Laravel 行為的建議。如果您提出了新功能,請願意實現至少一些完成該功能所需的程式碼。

有關錯誤、新功能以及現有功能的實作的非正式討論發生在 Laravel Discord 伺服器#internals 頻道中。Laravel 的維護者 Taylor Otwell 通常在該頻道中出現於 UTC-06:00 或 America/Chicago 的工作日上午 8 點至下午 5 點,並偶爾在其他時間出現。

使用哪個分支?

所有 錯誤修復應發送到支援錯誤修復的最新版本(目前為 12.x)。錯誤修復永遠不應發送到 master 分支,除非它們修復的功能僅存在於即將發布的版本中。

次要 功能,與當前版本完全向後兼容的功能,可以發送到最新的穩定分支(目前為 12.x)。

主要 新功能或具有破壞性更改的功能應始終發送到 master 分支,其中包含即將發布的版本。

編譯資源檔

如果您提交的更改會影響編譯文件,例如 laravel/laravel 存儲庫中 resources/cssresources/js 中的大多數文件,請不要提交已編譯的文件。由於它們的大小較大,審查者實際上無法審查它們。這可能被利用為將惡意代碼注入 Laravel 的一種方式。為了防禦性地防止這種情況,所有編譯文件將由 Laravel 維護者生成並提交。

安全漏洞

如果您在 Laravel 中發現安全漏洞,請發送郵件給 Taylor Otwell,郵箱為 taylor@laravel.com。所有安全漏洞將被及時處理。

編碼風格

Laravel 遵循 PSR-2 編碼標準和 PSR-4 自動加載標準。

PHPDoc

以下是一個有效的 Laravel 文件塊示例。請注意,@param 屬性後面跟著兩個空格,引數類型,再加兩個空格,最後是變量名:

/**
 * Register a binding with the container.
 *
 * @param  string|array  $abstract
 * @param  \Closure|string|null  $concrete
 * @param  bool  $shared
 * @return void
 *
 * @throws \Exception
 */
public function bind($abstract, $concrete = null, $shared = false)
{
    // ...
}

當由於使用原生類型而使 @param@return 屬性多餘時,可以將其刪除:

/**
 * Execute the job.
 */
public function handle(AudioProcessor $processor): void
{
    //
}

但是,當原生類型是通用的時,請通過使用 @param@return 屬性來指定通用類型:

/**
 * Get the attachments for the message.
 *
 * @return array<int, \Illuminate\Mail\Mailables\Attachment>
 */
public function attachments(): array
{
    return [
        Attachment::fromStorage('/path/to/file'),
    ];
}

StyleCI

如果您的代碼風格不完美,不用擔心!StyleCI 將自動將任何風格修復合併到 Laravel 存儲庫中,以便在合併拉取請求後。這使我們可以專注於貢獻的內容,而不是代碼風格。

行為準則

Laravel 的行為準則源自 Ruby 的行為準則。任何違反行為準則的行為都可以向 Taylor Otwell(taylor@laravel.com)舉報:

  • 參與者將容忍相反的觀點。
  • 參與者必須確保其語言和行為不含人身攻擊和貶低個人的言論。
  • 在解釋他人的言行時,參與者應始終假設良好意圖。
  • 任何可以合理被視為騷擾的行為將不被容忍。