貢獻指南
錯誤回報
為了鼓勵積極協作,Laravel 強烈建議使用 pull request,而不僅僅是錯誤回報。Pull request 只有在標記為「ready for review」(而非處於「draft」狀態)且新功能的所有測試都通過時才會被審查。處於「draft」狀態的長期非活躍 pull request 將在幾天後關閉。
但是,如果您提交錯誤回報,您的問題應包含標題和對問題的清晰描述。您還應包含盡可能多的相關資訊和一個演示該問題的程式碼範例。錯誤回報的目標是讓您自己和其他人都能輕鬆複製錯誤並開發修復程式。
請記住,建立錯誤回報是希望其他遇到相同問題的人能夠與您合作解決問題。不要期望錯誤回報會自動看到任何活動,或者其他人會立即跳出來修復它。建立錯誤回報有助於您自己和其他人開始解決問題的路徑。如果您想參與其中,您可以通過修復 我們的問題追蹤器中列出的任何錯誤來提供幫助。您必須通過 GitHub 驗證身份才能查看 Laravel 的所有問題。
如果您在使用 Laravel 時發現不正確的 DocBlock、PHPStan 或 IDE 警告,請不要建立 GitHub 問題。請改為提交 pull request 來修復該問題。
Laravel 原始碼在 GitHub 上進行管理,每個 Laravel 專案都有其儲存庫
- Laravel 應用程式
- Laravel Art
- Laravel Breeze
- Laravel 文件
- Laravel Dusk
- Laravel Cashier Stripe
- Laravel Cashier Paddle
- Laravel Echo
- Laravel Envoy
- Laravel Folio
- Laravel 框架
- Laravel Homestead (建立腳本)
- Laravel Horizon
- Laravel Jetstream
- Laravel Passport
- Laravel Pennant
- Laravel Pint
- Laravel Prompts
- Laravel Reverb
- Laravel Sail
- Laravel Sanctum
- Laravel Scout
- Laravel Socialite
- Laravel Telescope
- Laravel 網站
支援問題
Laravel 的 GitHub 問題追蹤器不適用於提供 Laravel 說明或支援。請改用下列其中一個管道
核心開發討論
您可以在 Laravel 框架儲存庫的 GitHub 討論區中建議新功能或改進現有的 Laravel 行為。如果您建議新功能,請願意實作至少一部分完成該功能所需的程式碼。
關於錯誤、新功能和現有功能實作的非正式討論在 Laravel Discord 伺服器的 #internals
頻道中進行。Laravel 的維護者 Taylor Otwell 通常在平日上午 8 點至下午 5 點(UTC-06:00 或美國/芝加哥)在頻道中出現,並在其他時間零星出現。
哪個分支?
所有錯誤修復都應發送到支援錯誤修復的最新版本(目前為 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
屬性後跟兩個空格、參數類型、另外兩個空格,最後是變數名稱
/** * 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
如果您的程式碼風格不夠完美,請不要擔心!在 pull request 合併後,StyleCI 將會自動將任何風格修復合併到 Laravel 儲存庫中。這讓我們可以專注於貢獻的內容,而不是程式碼風格。
行為準則
Laravel 的行為準則源自 Ruby 行為準則。任何違反行為準則的行為都可以向 Taylor Otwell 報告 ([email protected])
- 參與者應容忍相反的觀點。
- 參與者必須確保其語言和行為不包含人身攻擊和貶低的個人言論。
- 在解讀他人的言論和行為時,參與者應始終假設對方是善意的。
- 可以被合理視為騷擾的行為將不被容忍。