貢獻指南
錯誤報告
為了鼓勵積極協作,Laravel 強烈建議使用 Pull Request,而不僅僅是錯誤報告。Pull Request 只有在標記為「準備審查」(而非「草稿」狀態)且所有新功能的測試都通過時才會被審查。處於「草稿」狀態的長期非活動 Pull Request 將在幾天後關閉。
但是,如果您提交錯誤報告,您的問題應包含標題和對問題的清晰描述。您還應包含盡可能多的相關資訊和示範該問題的程式碼範例。錯誤報告的目標是讓您自己和其他人都能輕鬆重現錯誤並開發修復程式。
請記住,建立錯誤報告的目的是希望其他遇到相同問題的人能夠與您協作解決該問題。不要期望錯誤報告會自動看到任何活動,或者其他人會立即跳出來修復它。建立錯誤報告有助於您自己和其他人開始著手解決問題。如果您想參與其中,您可以透過修復我們的問題追蹤器中列出的任何錯誤來提供協助。您必須通過 GitHub 身份驗證才能查看 Laravel 的所有問題。
如果您在使用 Laravel 時注意到不正確的 DocBlock、PHPStan 或 IDE 警告,請不要建立 GitHub 問題。相反,請提交 Pull Request 以修復問題。
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 入門套件
- Laravel Passport
- Laravel Pennant
- Laravel Pint
- Laravel Prompts
- Laravel React 入門套件
- Laravel Reverb
- Laravel Sail
- Laravel Sanctum
- Laravel Scout
- Laravel Socialite
- Laravel Telescope
- Laravel Vue 入門套件
- Laravel 網站
支援問題
Laravel 的 GitHub 問題追蹤器並非旨在提供 Laravel 幫助或支援。請改用以下管道之一
核心開發討論
您可以在 Laravel 框架儲存庫的GitHub 討論區中提出新功能或改進現有 Laravel 行為的建議。如果您提出新功能,請願意實作至少部分完成該功能所需的程式碼。
關於錯誤、新功能和現有功能實作的非正式討論在Laravel Discord 伺服器的 #internals
頻道中進行。Laravel 的維護者 Taylor Otwell 通常在工作日的上午 8 點至下午 5 點(UTC-06:00 或 America/Chicago)在頻道中,並且在其他時間偶爾出現在頻道中。
哪個分支?
所有錯誤修復都應發送到支援錯誤修復的最新版本(目前為 11.x
)。錯誤修復絕不應發送到 master
分支,除非它們修復僅在即將發佈的版本中存在的功能。
與目前版本完全向後相容的次要功能可以發送到最新的穩定分支(目前為 11.x
)。
具有重大變更或破壞性變更的主要新功能應始終發送到包含即將發佈版本的 master
分支。
編譯後的資源
如果您提交的變更會影響編譯檔案,例如 laravel/laravel
儲存庫的 resources/css
或 resources/js
中的大多數檔案,請勿提交編譯後的檔案。由於它們的檔案很大,維護人員無法實際審查它們。這可能會被利用來將惡意程式碼注入 Laravel 中。為了防禦性地防止這種情況,所有編譯後的檔案都將由 Laravel 維護人員生成和提交。
安全性漏洞
如果您在 Laravel 中發現安全性漏洞,請發送電子郵件給 Taylor Otwell,電子郵件地址為 [email protected]。所有安全性漏洞都將立即解決。
程式碼風格
Laravel 遵循 PSR-2 程式碼標準和 PSR-4 自動載入標準。
PHPDoc
以下是有效的 Laravel 文件區塊範例。請注意,@param
屬性後跟兩個空格、引數類型、另外兩個空格,最後是變數名稱
1/** 2 * Register a binding with the container. 3 * 4 * @param string|array $abstract 5 * @param \Closure|string|null $concrete 6 * @param bool $shared 7 * @return void 8 * 9 * @throws \Exception10 */11public function bind($abstract, $concrete = null, $shared = false)12{13 // ...14}
當由於使用原生類型而導致 @param
或 @return
屬性變得多餘時,可以將它們移除
1/**2 * Execute the job.3 */4public function handle(AudioProcessor $processor): void5{6 //7}
但是,當原生類型是泛型時,請透過使用 @param
或 @return
屬性來指定泛型類型
1/** 2 * Get the attachments for the message. 3 * 4 * @return array<int, \Illuminate\Mail\Mailables\Attachment> 5 */ 6public function attachments(): array 7{ 8 return [ 9 Attachment::fromStorage('/path/to/file'),10 ];11}
StyleCI
如果您的程式碼風格不完美,請別擔心!StyleCI 將在 Pull Request 合併後自動將任何風格修復合併到 Laravel 儲存庫中。這讓我們可以專注於貢獻的內容,而不是程式碼風格。
行為準則
Laravel 行為準則源自 Ruby 行為準則。任何違反行為準則的行為都可能向 Taylor Otwell 報告 ([email protected])
- 參與者將容忍相反的觀點。
- 參與者必須確保其語言和行為不含人身攻擊和貶低性的人身評論。
- 在解釋他人的言語和行為時,參與者應始終假設善意。
- 可以合理地被視為騷擾的行為將不被容忍。