コンテンツへスキップ

貢献ガイド

バグレポート

活発なコラボレーションを奨励するため、Laravelはバグレポートだけでなく、プルリクエストを強く推奨しています。プルリクエストは、「レビュー準備完了」(「ドラフト」状態ではない)とマークされ、新機能のテストがすべて合格した場合にのみレビューされます。「ドラフト」状態のまま放置されているアクティブでないプルリクエストは、数日後にクローズされます。

しかし、バグレポートを提出する場合、イシューにはタイトルと問題の明確な説明を含める必要があります。また、できるだけ多くの関連情報と、問題を実証するコードサンプルを含めるべきです。バグレポートの目的は、あなた自身や他の人がバグを再現し、修正を開発するのを容易にすることです。

バグレポートは、同じ問題を抱える他の人が解決のために協力してくれることを期待して作成されるものであることを忘れないでください。バグレポートが自動的に何らかの活動を見せたり、他の人がすぐに修正に飛びついたりすることを期待してはいけません。バグレポートを作成することは、あなた自身と他の人が問題解決の道を歩み始めるのを助けるものです。もし貢献したいのであれば、私たちのイシュートラッカーにリストされているバグの修正を手伝うことができます。Laravelのすべてのイシューを閲覧するには、GitHubで認証される必要があります。

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またはAmerica/Chicago)にこのチャンネルに滞在しており、その他の時間帯にも散発的に参加しています。

どのブランチ?

すべてのバグ修正は、バグ修正をサポートする最新バージョン(現在は`11.x`)に送信する必要があります。バグ修正は、次期リリースにのみ存在する機能を修正する場合を除き、決して`master`ブランチに送信してはなりません。

現在のリリースと完全に後方互換性のあるマイナーな機能は、最新の安定ブランチ(現在は`11.x`)に送信することができます。

メジャーな新機能や破壊的変更を伴う機能は、常に次期リリースを含む`master`ブランチに送信する必要があります。

コンパイル済みアセット

`laravel/laravel`リポジトリの`resources/css`や`resources/js`にあるほとんどのファイルなど、コンパイルされたファイルに影響を与える変更を送信する場合、コンパイルされたファイルをコミットしないでください。サイズが大きいため、メンテナーが現実的にレビューすることはできません。これは、悪意のあるコードをLaravelに注入する方法として悪用される可能性があります。これを防御的に防ぐため、すべてのコンパイル済みファイルはLaravelのメンテナーによって生成およびコミットされます。

セキュリティ脆弱性

Laravel内にセキュリティ脆弱性を発見した場合は、Taylor Otwell ([email protected])までメールを送ってください。すべてのセキュリティ脆弱性は、迅速に対処されます。

コーディングスタイル

Laravelは、PSR-2コーディング規約とPSR-4オートローディング規約に従っています。

PHPDoc

以下は、有効なLaravelドキュメンテーションブロックの例です。`@param`属性の後に2つのスペース、引数の型、さらに2つのスペース、そして最後に変数名が続くことに注意してください。

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 \Exception
10 */
11public function bind($abstract, $concrete = null, $shared = false)
12{
13 // ...
14}

ネイティブ型を使用することで`@param`または`@return`属性が冗長になる場合は、それらを削除することができます。

1/**
2 * Execute the job.
3 */
4public function handle(AudioProcessor $processor): void
5{
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 ([email protected])に報告することができます。

  • 参加者は、反対意見に対して寛容であること。
  • 参加者は、自身の言葉や行動に個人攻撃や中傷的な個人的発言がないことを保証しなければならない。
  • 他者の言葉や行動を解釈する際には、参加者は常に善意を前提とすべきである。
  • ハラスメントと合理的に見なされる可能性のある行動は許容されない。

Laravelは最も生産的な方法です
ソフトウェアを構築、デプロイ、監視します。