Skip to content

贡献指南

Bug 报告

为了鼓励积极协作,Laravel 强烈鼓励拉取请求,而不仅仅是错误报告。仅当标记为“准备审核”(不处于“草稿”状态)并且所有新功能测试都通过时,才会审核拉取请求。处于“草稿”状态的滞留、非活动拉取请求将在几天后关闭。

但是,如果您提交错误报告,您的问题应包含标题和问题的明确描述。还应包含尽可能多的相关信息和演示问题的代码示例。错误报告的目标是让您自己和其他人轻松复制错误并开发修复程序。

请记住,创建 bug 报告是希望有相同问题的其他人能够与您合作解决它。不要指望 bug 报告会自动看到任何活动,或者其他人会跳转来修复它。创建 bug 报告有助于您自己和他人开始修复问题。如果您想参与进来,您可以通过修复我们的问题跟踪器中列出的任何错误来提供帮助。您必须通过 GitHub 的身份验证才能查看 Laravel 的所有问题。

如果您在使用 Laravel 时发现不正确的 DocBlock、PHPStan 或 IDE 警告,请不要创建 GitHub 问题。相反,请提交拉取请求以解决问题。

Laravel 源代码在 GitHub 上管理,每个 Laravel 项目都有存储库:

支持问题

Laravel 的 GitHub 问题跟踪器并非旨在为 Laravel 提供帮助或支持。请改用以下渠道之一:

核心开发讨论

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

关于错误、新功能和现有功能实现的非正式讨论在 Laravel Discord 服务器的 #internals 频道中进行。Laravel 的维护者 Taylor Otwell 通常在工作日上午 8 点至下午 5 点(UTC-06:00 或美国/芝加哥)出现在频道中,其他时间偶尔出现在频道中。

哪个分支?

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

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

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

已编译的资源

如果您提交的更改会影响已编译的文件,例如 laravel/laravel 存储库的 resources/cssresources/js 中的大多数文件,请不要提交已编译的文件。由于它们的大小很大,维护者实际上无法对其进行审查。这可以被利用作为将恶意代码注入 Laravel 的一种方式。为了防御性地防止这种情况,所有编译后的文件都将由 Laravel 维护者生成和提交。

安全漏洞

如果您在 Laravel 中发现安全漏洞,请发送电子邮件至 taylor@laravel.com 的 Taylor Otwell。所有安全漏洞都将得到及时解决。

编码风格

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

PHPDoc

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

php
    /**
     * 向容器注册绑定
     *
     * @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 属性由于使用本机类型而冗余时,可以删除它们:

php
    /**
     * Execute the job.
     */
    public function handle(AudioProcessor $processor): void
    {
        //
    }

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

php
    /**
     * 获取邮件的附件
     *
     * @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) 报告:

  • P参与者将容忍相反的观点。
  • 参与者必须确保他们的语言和行为不含人身攻击和贬低个人言论。
  • 在解释他人的言行时,参与者应始终假设是好的。
  • 可以合理地被视为骚扰的行为将不被容忍。