貢獻指南
錯誤報告
為了鼓勵積極的協作,Laravel 強烈建議使用拉取請求,而不僅僅是錯誤報告。拉取請求只有在標記為「準備好審查」(不是「草稿」狀態)且所有新功能的測試都通過時才會進行審查。留在「草稿」狀態的未活動拉取請求將在幾天後關閉。
然而,如果您提交了錯誤報告,您的問題應包含標題和清晰的問題描述。您還應該包含盡可能多的相關信息和展示問題的程式碼示例。錯誤報告的目標是使自己和其他人能夠複製該錯誤並開發修復方案。
請記住,錯誤報告是希望其他遇到相同問題的人能夠與您合作解決。不要期望錯誤報告會自動得到任何活動,或者其他人會立即修復它。創建錯誤報告有助於您和其他人開始解決問題的道路。如果您想參與,您可以通過修復我們問題跟蹤器中列出的任何錯誤來幫忙。您必須使用 GitHub 認證才能查看 Laravel 的所有問題。
如果您在使用 Laravel 時注意到不當的 DocBlock、PHPStan 或 IDE 警告,請不要建立 GitHub 問題。請提交拉取請求來修復問題。
Laravel 的原始碼在 GitHub 上管理,每個 Laravel 專案都有對應的存儲庫:
- Laravel 應用程式
- Laravel Art
- Laravel 文件
- Laravel Dusk
- Laravel Cashier Stripe
- Laravel Cashier Paddle
- Laravel Echo
- Laravel Envoy
- Laravel Folio
- Laravel 框架
- Laravel Homestead(建置腳本)
- Laravel Horizon
- Laravel Livewire Starter Kit
- Laravel Passport
- Laravel Pennant
- Laravel Pint
- Laravel Prompts
- Laravel React Starter Kit
- Laravel Reverb
- Laravel Sail
- Laravel Sanctum
- Laravel Scout
- Laravel Socialite
- Laravel Telescope
- Laravel Vue Starter Kit
- 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/css
或 resources/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)舉報:
- 參與者將容忍相反的觀點。
- 參與者必須確保其語言和行為不含人身攻擊和貶低個人的言論。
- 在解釋他人的言行時,參與者應始終假設良好意圖。
- 任何可以合理被視為騷擾的行為將不被容忍。