贡献指南
错误报告
为了鼓励积极协作,Laravel 强烈建议提交拉取请求,而不仅仅是提交错误报告。只有标记为“准备审核”(而非“草稿”状态)且所有新功能测试均通过的拉取请求才会被审核。处于“草稿”状态且未激活的拉取请求将在几天后被关闭。
但是,如果您提交的是错误报告,您的问题应该包含标题和清晰的问题描述。您还应该包含尽可能多的相关信息以及一个演示该问题的代码示例。错误报告的目的是让您自己和其他人能够轻松地重现错误并开发修复程序。
请记住,创建错误报告的目的是希望遇到相同问题的人能够与您合作解决问题。不要指望错误报告会自动显示任何Events,也不要指望其他人会立即修复它。创建错误报告是为了帮助您自己和其他人着手解决问题。如果您想贡献一份力量,可以通过修复我们问题跟踪器中列出的任何错误来提供帮助。您必须通过 GitHub 进行身份验证才能查看 Laravel 的所有问题。
如果您在使用 Laravel 时发现 DocBlock、PHPStan 或 IDE 警告不正确,请不要创建 GitHub 问题。请提交拉取请求来解决问题。
Laravel 源代码在 GitHub 上管理,每个 Laravel 项目都有存储库:
- Laravel 应用程序
- Laravel 艺术
- Laravel 文档
- Laravel Dusk
- Laravel Cashiers条纹
- 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 社交名流
- Laravel Telescope
- Laravel Vue 入门套件
支持问题
Laravel 的 GitHub 问题跟踪器并非旨在提供 Laravel 帮助或支持。请使用以下渠道之一:
核心开发讨论
您可以在 Laravel 框架仓库的GitHub 讨论区中提出新功能或改进现有 Laravel 行为的建议。如果您提出一项新功能,请至少愿意实现完成该功能所需的部分代码。
有关 Bug、新功能以及现有功能实现的非正式讨论在Laravel Discord 服务器#internals
的频道中进行。Laravel 的维护者 Taylor Otwell 通常于工作日上午 8 点至下午 5 点(UTC-06:00 或美国/芝加哥时间)出现在频道中,其他时间也会偶尔出现在频道中。
哪个分行?
所有错误修复都应发送至支持错误修复的最新版本(目前为12.x
)。除非修复的功能仅在即将发布的版本中存在,否则错误修复不应发送至分支。master
与当前版本完全向后兼容的次要功能可能会被发送到最新的稳定分支(当前12.x
)。
主要的新功能或具有重大变化的功能应始终发送到master
包含即将发布的版本的分支。
编译资产
如果您提交的更改会影响已编译文件(例如代码库中的大多数文件)resources/css
,请勿提交已编译文件。由于这些文件体积庞大,维护人员实际上无法对其进行审核。这可能会被利用,从而向 Laravel 注入恶意代码。为了防范这种情况,所有已编译文件都将由 Laravel 维护人员生成并提交。resources/js
laravel/laravel
安全漏洞
如果您发现 Laravel 中存在安全漏洞,请发送电子邮件至 Taylor Otwell,地址为taylor@laravel.com。所有安全漏洞都将得到及时解决。
编码风格
Laravel 遵循PSR-2编码标准和PSR-4自动加载标准。
PHP文档
以下是 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会在合并拉取请求后自动将所有样式修复合并到 Laravel 代码库中。这使我们能够专注于贡献的内容,而不是代码样式。
行为守则
Laravel 行为准则源自 Ruby 行为准则。任何违反本行为准则的行为均可报告给 Taylor Otwell ( taylor@laravel.com ):
- 参与者将容忍反对意见。
- 参与者必须确保其语言和行为不包含人身攻击和贬损个人的言论。
- 在解读他人的言行时,参与者应始终假设其怀有善意。
- 任何可合理视为骚扰的行为都是不会被容忍的。