Laravel 源代码贡献指南

错误反馈

为了鼓励积极协作,Laravel 强烈地鼓励使用 Pull Request 指出修改的内容,而不仅仅只是反馈错误。「错误反馈」也可以用 PR 来提交失败测试。

如果你要提交错误反馈,你的问题应该包含标题和明确的问题描述,并尽可能多的提供相关的信息和演示该问题的代码示例。错误反馈的目的是让你和其他人可以轻松地重现并修复错误。

请记住,错误反馈的初衷是让其它有相同问题的人能够和你协作解决问题。不要指望反馈错误后会很快有人修复它。创建错误反馈是能帮助你和其他人开始着手修复问题的途径。

Laravel 源代码托管在 GitHub 上面,并且每个 Laravel 的项目都有自己的代码仓库:

- [Laravel 应用](https://github.com/laravel/laravel) - [Laravel Art](https://github.com/laravel/art) - [Laravel 文档](https://github.com/laravel/docs) - [Laravel Cashier](https://github.com/laravel/cashier) - [Braintree 版 Laravel Cashier](https://github.com/laravel/cashier-braintree) - [Laravel Envoy](https://github.com/laravel/envoy) - [Laravel 框架](https://github.com/laravel/framework) - [Laravel Homestead](https://github.com/laravel/homestead) - [Laravel Homestead 构建脚本](https://github.com/laravel/settler) - [Laravel Passport](https://github.com/laravel/passport) - [Laravel 搜索系统](https://github.com/laravel/scout) - [Laravel Socialite](https://github.com/laravel/socialite) - [Laravel 网站](https://github.com/laravel/laravel.com)

核心开发讨论

如果你想提出现有的 Laravel 的功能建议或者改进,请到 Laravel Internals 的 反馈栏 讨论。如果你提出新功能,如果愿意,我们希望能请你至少实现一些完成该功能所需的代码。

有关错误、新功能和现有功能的实现的非正式讨论会在 LaraChat Slack 团队的 #internals 频道中进行。Laravel 的维护者 Taylor Otwell 通常都会在工作日的早上 8 点 到下午 5点( UTC-06:00 或 America/Chicago )出现在频道上,其它时间偶尔也会出现。

选择分支?

所有错误修复都应该发送到最新的稳定分支或当前的 LTS 分支(5.5)上。错误修复应该发送到 master 支,除非它们修复仅在即将发布的版本中存在的功能。

与当前 Laravel 版本完全向后兼容次要功能可能会发送到最新的稳定分支。

主要的 新功能都应该发送到 master 分支,它包含即将发布的 Laravel 版本。

如果不确定你的功能是主要的还是次要的,请咨询 LaraChat Slack 团队的 #internals 频道上的 Taylor Otwell。

安全漏洞

如果你发现 Laravel 存在安全漏洞,请发送电子邮件给Taylor Otwell: [email protected]。他会及时解决所有安全漏洞。

编码风格

Laravel 遵循 PSR-2 编码规范和 PSR-4 自动加载规范。

PHPDoc

以下是正确的 Laravel 注释的示例。请注意,@param 属性后跟两个空格、参数类型、两个空格,最后是变量名称:

/**
 * 注册一个绑定到容器。
 *
 * @param  string|array  $abstract
 * @param  \Closure|string|null  $concrete
 * @param  bool  $shared
 * @return void
 */
public function bind($abstract, $concrete = null, $shared = false)
{
    //
}

StyleCI

别担心你的编码风格不够漂亮!在合并 PR 后 StyleCI 会自动修正样式后再合并到 Laravel 仓库中。这样使得我们可以专注于贡献内容本身而不是编码风格。