错误报告
为鼓励积极协作,Laravel 强烈鼓励通过拉取请求来解决问题,而非通过 GitHub Issues。我们大多数第一方包的 GitHub Issues 功能均已禁用。
若你发现问题,请创建一个能解决该问题的拉取请求。你的拉取请求应包含标题,以及对问题及其解决方案的清晰描述。你还应尽可能多地提供相关信息,并附上能复现该问题的代码示例。拉取请求的目标是方便你自身及他人理解问题并验证修复效果。
若你不知道如何修复该问题,可向编程智能体描述该问题,并尝试使用它来创建拉取请求。
只有当拉取请求被标记为“可审查”(非“草稿”状态)且新功能的所有测试均通过时,才会对其进行审查。处于“草稿”状态的闲置、非活跃拉取请求将在几天后被关闭。
Laravel 源代码托管于 GitHub,每个 Laravel 项目均设有对应的代码仓库:
- Laravel AI SDK
- Laravel 应用
- Laravel Art
- Laravel Boost
- Laravel 文档
- Laravel Dusk
- Laravel Cashier Stripe
- Laravel Cashier Paddle
- Laravel Echo
- Laravel Envoy
- Laravel Folio
- Laravel 框架
- Laravel Horizon
- Laravel Passport
- Laravel Pennant
- Laravel Pint
- Laravel Prompts
- Laravel Reverb
- Laravel Sail
- Laravel Sanctum
- Laravel Scout
- Laravel Socialite
- Laravel Telescope
- Laravel 入门套件(Maestro)
支持咨询
Laravel 的 GitHub Issue 追踪器不用于提供 Laravel 帮助或支持。请改用以下任一渠道:
应提交至哪个分支?
所有错误修复都应提交至支持错误修复的最新版本(当前为 13.x)。错误修复绝不可提交至 master 分支,除非修复的功能仅存在于即将发布的版本中。
与当前版本完全向后兼容的次要功能,可提交至最新稳定分支(当前为 13.x)。
重大新功能或包含破坏性变更的功能,应始终提交至包含即将发布版本的 master 分支。
编译后的资源文件
若你提交的变更会影响编译后的文件(例如 laravel/laravel 仓库中 resources/css 或 resources/js 目录下的大部分文件),请勿提交这些编译后的文件。由于文件体积过大,维护者无法对其进行有效审查。此类文件可能被利用,作为向 Laravel 注入恶意代码的途径。为防范此类风险,所有编译后的文件将由 Laravel 维护者生成并提交。
AI 生成的贡献
我们感谢所有提交至 Laravel 的拉取请求。然而,未经充分人工审查与考量、主要由 AI 生成的重大贡献,是不被接受的。
若你选择使用 AI 工具辅助完成对框架的重大或复杂贡献,所生成的代码必须在提交前由你进行全面审查、测试并充分理解。
拉取请求的描述必须完全由贡献者撰写。使用 AI 生成描述的拉取请求将被关闭。
批量创建 Issue 或完全由 AI 生成的拉取请求,我们将不予容忍。此类拉取请求将在未审查的情况下被关闭,相关贡献用户可能会被禁止访问该仓库。
我们鼓励贡献者熟悉现有代码库、参与社区互动,并提交能够体现自身理解、且经过审慎考量所解决问题的拉取请求。
安全漏洞
若你在 Laravel 中发现安全漏洞,请发送邮件至我们的安全团队:[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
若你的代码风格不够完美,不必担心!StyleCI 会在拉取请求合并后,自动将所有风格修复合并至 Laravel 仓库。这使我们能够专注于贡献的内容,而非代码风格。
行为准则
Laravel 行为准则源自 Ruby 行为准则。任何违反行为准则的行为,均可向 Taylor Otwell([email protected])举报:
- 参与者应对不同观点持包容态度。
- 参与者须确保自身语言及行为不含人身攻击和诋毁性的人身言论。
- 在解读他人的言语和行为时,参与者应始终秉持善意。
- 可被合理认定为骚扰的行为,一律不予容忍。