コンテンツにスキップ

貢献ガイド

バグレポート

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

ただし、バグレポートを提出する場合は、件名と問題の明確な説明を含める必要があります。また、可能な限り関連性の高い情報と、問題を実証するコードサンプルを含める必要があります。バグレポートの目的は、自分自身と他の人がバグを簡単に再現し、修正を開発できるようにすることです。

バグレポートは、同じ問題を抱える他の人が解決に向けて協力できるようになることを願って作成されることを覚えておいてください。バグレポートが自動的に何らかのアクティビティを見たり、他の人が修正に飛びついたりすることを期待しないでください。バグレポートを作成することは、あなた自身や他の人が問題の修正に着手するのに役立ちます。協力したい場合は、イシュートラッカーにリストされているバグを修正することで協力できます。Laravelのすべてのイシューを表示するには、GitHubで認証されている必要があります。

Laravelの使用中に不適切なDocBlock、PHPStan、またはIDEの警告に気付いた場合は、GitHubイシューを作成しないでください。代わりに、問題を修正するためのプルリクエストを送信してください。

LaravelのソースコードはGitHubで管理されており、Laravelプロジェクトごとにリポジトリがあります。

サポートに関する質問

LaravelのGitHubイシュートラッカーは、Laravelのヘルプやサポートを提供するものではありません。代わりに、次のいずれかのチャネルを使用してください。

コア開発に関する議論

新しい機能や既存のLaravelの動作の改善案は、LaravelフレームワークリポジトリのGitHubディスカッションボードで提案できます。新しい機能を提案する場合は、その機能を完了するために必要なコードの一部を実装する意思があるようにしてください。

バグ、新機能、既存の機能の実装に関する非公式な議論は、Laravel Discordサーバー#internalsチャンネルで行われます。Laravelのメンテナーであるテイラー・オットウェルは、通常、平日の午前8時から午後5時(UTC-06:00またはアメリカ/シカゴ)にチャンネルにいて、他の時間帯にも散発的にチャンネルにいます。

どのブランチ?

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

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

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

コンパイル済みアセット

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

セキュリティの脆弱性

Laravel内にセキュリティの脆弱性を発見した場合は、テイラー・オットウェルにメールで[email protected]を送信してください。すべてのセキュリティの脆弱性には迅速に対応します。

コーディングスタイル

Laravelは、PSR-2コーディング標準とPSR-4オートローディング標準に従います。

PHPDoc

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

/**
* 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の行動規範から派生しています。行動規範への違反は、テイラー・オットウェル([email protected])に報告できます。

  • 参加者は、反対の意見を寛容に受け止めます。
  • 参加者は、自分の言葉遣いや行動に個人的な攻撃や軽蔑的な個人的な発言が含まれていないことを確認する必要があります。
  • 他の人の言葉や行動を解釈する際、参加者は常に善意を想定する必要があります。
  • ハラスメントと合理的にみなされる行為は容認されません。