Bug 报告

为了鼓励活跃的协作,Laravel 强烈推荐拉取请求,而不仅仅是错误报告。只有标记为「准备好审查」(而不是「草稿」状态)且新功能的所有测试都通过的拉取请求才会进行审核。长时间处于「草稿」状态的非活跃拉取请求将在几天后被关闭。

不过,如果你提交了错误报告,你的问题应包含标题和清晰的问题描述。你还应尽可能提供相关信息和演示问题的代码示例。错误报告的目的是使自己和其他人能够轻松地复制错误并开发修复程序。

请记住,错误报告的创建是希望其他拥有相同问题的人能够与你协作解决问题。不要期望错误报告会自动获得任何活动,或者其他人会迅速修复它。创建错误报告有助于你自己和其他人开始解决问题的路径。如果你想参与,可以通过修复 我们的问题跟踪器中列出的任何错误 来帮忙。你必须使用 GitHub 进行身份验证才能查看 Laravel 的所有问题。

如果您在使用 Laravel 时注意到不适当的 DocBlock、PHPStan 或 IDE 警告,请不要创建 GitHub issue。相反,请提交pr来解决问题。

Laravel的源代码在GitHub上进行管理,每个Laravel项目都有各自的仓库:

Laravel Application
Laravel Art
Laravel Documentation
Laravel Dusk
Laravel Cashier Stripe
Laravel Cashier Paddle
Laravel Echo
Laravel Envoy
Laravel Folio
Laravel Framework
Laravel Homestead ( Build Scripts)
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 Website

帮助支持

Laravel 的 GitHub 问题跟踪器不适用于提供 Laravel 帮助或支持。请使用以下渠道之一:

GitHub 讨论
Laracasts 论坛
Laravel.io 论坛
StackOverflow
Discord
Larachat
IRC

核心发展讨论

你可以在 Laravel 框架存储库的 GitHub讨论板中提出新功能或改进现有 Laravel 行为。如果提出了新功能,请愿意实现至少一些完成该功能所需的代码。

关于错误、新功能和现有功能的实现的非正式讨论在 Laravel Discord server 的 #internals 频道进行。Laravel 的维护者 Taylor Otwell 通常在周一至周五上午 8 点至下午 5 点(UTC-06:00 或美国 / 芝加哥)在频道中出现,并在其他时间不定期出现。

选择哪个分支?

所有 bug 修复都应该发送到支持 bug 修复的最新版本(当前为 php 11.x)。Bug 修复永远不应该发送到主分支,除非它们修复了仅在即将发布的版本中存在的功能。

次要功能,如果与当前版本完全向后兼容,可以发送到最新的稳定分支(当前为 php 11.x)。

重要新功能或具有破坏性变更的功能应始终发送到主分支,其中包含即将发布的版本。

编译资源

如果你提交的更改会影响编译后的文件,例如 php laravel/laravel 仓库中的 php resources/cssphp resources/js 中的大多数文件,请不要提交编译后的文件。由于它们的大小很大,维护者无法实际审查它们。这可能被用作将恶意代码注入 Laravel 的方式。为了防御性地防止这种情况,所有编译后的文件都将由 Laravel 维护者生成并提交。

安全漏洞

如果你发现 Laravel 中存在安全漏洞,请通过电子邮件发送给 Taylor Otwell( [email protected])。所有安全漏洞将得到及时处理。

代码风格

Laravel 遵循 PSR-2 编码标准和 PSR-4 自动加载标准。

PHPDoc

以下是一个有效的 Laravel 文档块示例。请注意,php @param 属性后面跟着两个空格,参数类型,再跟着两个空格,最后是变量名:

  1. /**
  2. * 容器注册与绑定
  3. *
  4. * @param string|array $abstract
  5. * @param \Closure|string|null $concrete
  6. * @param bool $shared
  7. * @return void
  8. *
  9. * @throws \Exception
  10. */
  11. public function bind($abstract, $concrete = null, $shared = false)
  12. {
  13. // ...
  14. }

php @paramphp @return 属性由于使用原生类型而出现冗余时,可以将其移除:

  1. /**
  2. * 执行任务
  3. */
  4. public function handle(AudioProcessor $processor): void
  5. {
  6. //
  7. }

但是,当原生类型是泛型时,请通过使用 php @paramphp @return 属性指定泛型类型:

  1. /**
  2. * 获取消息
  3. *
  4. * @return array<int, \Illuminate\Mail\Mailables\Attachment>
  5. */
  6. public function attachments(): array
  7. {
  8. return [
  9. Attachment::fromStorage('/path/to/file'),
  10. ];
  11. }

StyleCI

别担心你的代码风格, StyleCI 是一个自动化的代码风格工具,它会在拉取请求合并后自动将任何风格修复合并到 Laravel 仓库中。这使我们能够专注于贡献的内容而不是代码风格上。

行为准则

Laravel 的行为准则源自于 Ruby 的行为准则。如果违反了行为准则,可以向 Taylor Otwell([email protected])报告:

参与者应尊重不同的观点。
参与者必须确保他们的语言和行为没有人身攻击和贬低个人言论。
在解释他人的言行时,参与者应始终保持良好的意图。
不能容忍可合理视为骚扰的行为。