Contribution Guide
Table of Contents
Bug Reports
アクティブなコラボレーションを促進するために、 Laravel はバグレポートだけでなくプルリクエストを強く推奨しています。プルリクエストは、"レビューの準備ができている"とマークされ("ドラフト"の state ではない)そして新しい features のすべてのテストが合格したときにのみレビューされます。"ドラフト"の state に残された活動のないプルリクエストは、数日後に閉じられます。
しかし、バグレポートを送信する場合、あなたの問題はタイトルと明確な問題の説明を含めるべきです。また、可能な限り関連情報を多く含め、問題を示す code のサンプルも含めてください。バグレポートの目標は、自分自身 - そして他の人々 - がバグを再現し、修正を作り出すのを容易にすることです。
覚えておいてください。バグレポートは、同じ問題を抱える他の人々があなたと協力してそれを解決することを期待して作成されます。バグレポートが自動的に何かの活動を見ることや他の人々がそれを修正しようと飛びつくことを期待しないでください。バグレポートを作成することは、自分自身と他の人々が問題を修正する path を開始するのに役立ちます。あなたが参加したいと思うなら、私たちの問題追跡者に記載されている任意のバグ を修正することで手助けすることができます。 GitHub で認証されていなければならず、Laravel の全ての問題を view するためです。
Laravel を使用している間に不適切な DocBlock、PHPStan、または IDE の警告に気がついた場合は、GitHub で問題を作成しないでください。代わりに、問題を解決するためにプル request を提出してください。
Laravel のソース code は、 GitHub で管理されており、それぞれの Laravel のプロジェクトにはリポジトリが存在します:
- Laravel Application
- Laravel Art
- Laravel Documentation
- Laravel Dusk
- Laravel Cashier Stripe
- Laravel Cashier Paddle
- Laravel Echo
- Laravel Envoy
- Laravel Folio
- Laravel Framework
- Laravel Homestead
- Laravel Homestead Build Scripts
- Laravel Horizon
- Laravel Jetstream
- Laravel Passport
- Laravel Pennant
- Laravel Pint
- Laravel Prompts
- Laravel Reverb
- Laravel Sail
- Laravel Sanctum
- Laravel Scout
- Laravel Socialite
- Laravel Telescope
- Laravel Website
Support Questions
Laravel の GitHub の問題追跡は、Laravel のヘルプやサポートを提供する目的ではありません。代わりに、以下のいずれかの channel を使用してください:
Core Development Discussion
新しい features の提案や、既存の Laravel 動作の改善を、 Laravel フレームワークのリポジトリであるGitHub ディスカッションボード で提案することができます。新しい feature を提案する場合は、その feature を完成させるために必要な code の一部を少なくとも実装する意欲があることをお願いします。
バグ、新しい features 、既存の features の実装についての非公式な議論が、Laravel Discord server の #internals
channel で行われます。 Laravel のメンテナーである Taylor Otwell は、通常、平日の午前 8 時から午後 5 時まで(UTC-06:00 または America/Chicago) channel に参加しており、その他の時間帯では不定期に channel に出現します。
Which Branch?
すべてのバグ修正は、バグ修正をサポートしている最新 version(現在は10.x
)に送信する必要があります。バグ修正は、それが今後の release でのみ存在する機能を修正する限り、決してmaster
ブランチに送信しないでください。
マイナーな features は、現在の release と完全に後方互換性がある場合、最新の安定版ブランチ(現在は 11.x
)に送信することができます。
主要な新たな features や、大規模な変更を伴う features は、常にmaster
ブランチに送られるべきです。これは今後の release を含んでいます。
Compiled Assets
resources/css
やresources/js
のような、laravel/laravel
リポジトリのコンパイルされるファイルに影響を与える変更を提出している場合、コンパイルされたファイルをコミットしないでください。それらのファイルはサイズが大きいため、実際にはメンテナーによってレ view することは不可能です。これは、コードを Laravel に悪意のある方式で注入する方法として悪用される可能性があります。これを防ぐために、すべてのコンパイルされたファイルは Laravel のメンテナーによって生成され、コミットされます。
Security Vulnerabilities
Laravel 内でセキュリティの脆弱性を見つけた場合は、Taylor Otwell に taylor[at]Laravel.com まで "mail" でご連絡ください。すべてのセキュリティの脆弱性は直ちに対処されます。
Coding Style
Laravel は、PSR-2 コーディング標準およびPSR-4 自動読み込み標準に従っています。
PHPDoc
以下は有効な Laravel ドキュメンテーションブロックの例です。@param
属性は、2 つのスペースで始まり、引数 type、さらに 2 つのスペース、最後に variable 名を指定していることに注意してください。
/**
* 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
の attributes がネイティブ型の使用により冗長となる場合、それらは削除できます:
/**
* Execute the job.
*/
public function handle(AudioProcessor $processor): void
{
//
}
しかし、ネイティブの type がジェネリックの場合、@param
または@return
の attributes を使って、ジェネリックの type を指定してください:
/**
* Get the attachments for the message.
*
* @return array<int, \Illuminate\Mail\Mailables\Attachment>
*/
public function attachments(): array
{
return [
Attachment::fromStorage('/path/to/file'),
];
}
StyleCI
あなたの code スタイリングが完璧でなくても心配しないでください! StyleCI は、プルリクエストがマージされた後にスタイルの修正を自動的に Laravel リポジトリに merge します。これにより、私たちは content の提供に焦点を当て、 code スタイルではなくなります。
Code of Conduct
Laravel code の行動規範は、Ruby code の行動規範から派生しています。行動規範 code の違反は、Taylor Otwell(taylor[at]laravel.com)に報告することができます:
- 参加者は、反対の views に対して寛容になります。
- 参加者は、自分の言葉と行動が個人への攻撃や軽蔑的な個人的な発言から自由であることを確認しなければなりません。
- 他者の言葉や行動を解釈する際、参加者は常に良い意図を仮定すべきです。
- 合理的にハラスメントと考えられる行為は許容されません。