Lang x Lang

Directory Structure

Table of Contents

Introduction

default の Laravelapplication 構造は、大規模でも小規模でも application の開始点として非常に適しています。しかし、あなたの application をどのように整理するかは自由です。Laravel は、Composer が class を自動的に読み込むことができる限り、特定の class がどこに配置されているかにほとんど制限を設けていません。

NOTE

Laravel に初めて触れるなら、Laravel Bootcamp をチェックしてみてください。フレームワークの操作方法を手取り足取り教えつつ、あなたが初めての Laravel application を build するお手伝いをします。

The Root Directory

App ディレクトリ

appディレクトリには、 application の中心となる code が含まれています。このディレクトリはもうすぐ詳しく見ていきますが、 application のほとんどすべてのクラスはこのディレクトリに存在します。

ブートストラップディレクトリ

bootstrapディレクトリには、フレームワークをブートストラップするapp.phpファイルが含まれています。また、このディレクトリには、 route や services cache ファイルなど、パフォーマンス最適化のためのフレームワーク生成ファイルを格納するcacheディレクトリも併設されています。

Config ディレクトリ

configディレクトリは、その名前が示す通り、アプリケーションのすべての設定ファイルを含んでいます。これらのファイルをすべて読んで、あなたに利用可能なすべての options について理解するのは素晴らしいアイデアです。

Database ディレクトリ

databaseディレクトリには、 database migrations 、 model ファクトリー、およびシードが含まれています。ご希望であれば、このディレクトリを SQLite の database を保管するためにも使用することができます。

Public ディレクトリ

publicディレクトリには、すべての requests のエントリポイントであるindex.phpファイルが含まれており、オートローディングを設定します。このディレクトリには、images や、JavaScript、CSS などのアセットも格納されています。

Resources ディレクトリ

resourcesディレクトリには、あなたのviewsだけでなく、 CSS や JavaScript などの未コンパイルの素材も含まれています。

Routes ディレクトリ

routes ディレクトリには、あなたの application のすべての route の定義が含まれています。 default では、 Laravel には web.phpconsole.php の 2 つの route ファイルが含まれています。

web.phpファイルには、webの middleware グループに Laravel が配置する routes が含まれており、これにより session state 、 CSRF protection 、および cookie encryption が提供されます。あなたの application がステートレスな、RESTful な API を提供しない場合、すべての routes はおそらくweb.phpファイルで定義されるでしょう。

console.php ファイルは、すべてのクロージャベースの console コマンドを定義できる場所です。各クロージャは、各コマンドの IO メソッドと対話する簡単なアプローチを可能にする command インスタンスにバインドされています。このファイルは HTTP routes を定義していませんが、 console ベースのエントリーポイント( routes )を application に定義します。また、 console.php ファイルでscheduleタスクも可能です。

オプションとして、 API routes (api.php)や broadcasting チャンネル(channels.php)の追加の route ファイルを、install:apiinstall:broadcastingの Artisan コマンドを使用してインストールすることができます。

api.phpファイルには、ステートレスを目指す routes が含まれているため、これらの routes を通じて application に入る requests は、tokens を介したauthentication を目指し、 session state へのアクセスは持ちません。

channels.phpファイルは、あなたの application がサポートするすべてのevent 放送channels を登録する場所です。

Storage ディレクトリ

storageディレクトリには、ログ、コンパイル済みの Blade templates 、ファイルベースの session、ファイル cache、およびフレームワークによって生成されるその他のファイルが格納されています。このディレクトリは、appframework、そしてlogsディレクトリに分割されています。 appディレクトリは、あなたの application によって生成される任意のファイルを保存するために使用することができます。frameworkディレクトリは、フレームワークによって生成されるファイルと cache を保存するために使用されます。最後に、logsディレクトリには、あなたのアプリケーションの log ファイルが格納されています。

storage/app/public ディレクトリは、公にアクセス可能であるべきプロフィールのアバターやユーザーが生成したファイルを保存するために利用されます。このディレクトリを指すシンボリックリンクを public/storage に作成するべきです。php artisan storage:link Artisan command を使用してリンクを作成することが可能です。

テストディレクトリ

testsディレクトリには自動化テストが含まれています。例えば、Pest または PHPUnit のユニットテストや feature テストが既に提供されています。各テストの class は、単語 Test を接尾辞にすべきです。テストは /vendor/bin/pest または /vendor/bin/phpunit command を使って実行できます。また、tests結果をより詳細で美しい表現で見たい場合は、php artisan test Artisan command を使ってテストを実行することもできます。

Vendor ディレクトリ

vendorディレクトリには、あなたのComposer の依存関係が含まれています。

The App Directory

あなたの application の大半は、Appディレクトリに収容されています。 default では、このディレクトリは app という名前空間であり、 Composer がPSR-4 オートローディングスタンダード を使って自動的にロードされます。

default で、appディレクトリには、HttpModels、およびProvidersディレクトリが含まれています。しかし、時間の経過とともに、クラスを生成するために Artisan コマンドを使用すると、 app ディレクトリ内にさまざまな他のディレクトリが生成されます。例えば、app/Consoleディレクトリは、 command class を生成するためにmake:command Artisan command を実行するまで存在しません。

ConsoleHttp ディレクトリは、それぞれ以下のセクションで詳しく説明されていますが、ConsoleHttp ディレクトリをあなたの application の中核への API と考えてみて下さい。 HTTP プロトコルと CLI は両方ともあなたの application と対話する手段ですが、実際の application のロジックを含んでいるわけではありません。言い換えれば、それらはあなたの application への命令を出す 2 つの方法です。Console ディレクトリには、あなたの Artisan commands がすべて含まれており、Http ディレクトリには、あなたのコントローラー、 middleware 、そして request が含まれています。

NOTE

appディレクトリ内の多くのクラスは、Artisan のコマンドを介して生成することができます。利用可能なコマンドを確認するには、ターミナルでphp artisan list make command を実行してください。

Broadcasting ディレクトリ

Broadcastingディレクトリには、application のすべての broadcast チャンネル classes が含まれています。これらの classes は、make:channel command を使用して生成されます。このディレクトリは default では存在しませんが、最初の channel を作成するときに作成されます。チャンネルについて詳しく知りたい場合は、eventbroadcastのドキュメンテーションをチェックしてください。

Console ディレクトリ

Consoleディレクトリには、 application のすべての custom Artisan コマンドが含まれています。これらのコマンドは、make:command command を使用して生成することができます。

Events ディレクトリ

このディレクトリは、 default では存在しませんが、event:generatemake:event の Artisan コマンドによって作成されます。Events ディレクトリにはevent クラスが格納されています。 Events は、特定の action が発生したことをあなたの application の他の部分に alert するために使用することができ、大きな柔軟性とデクープリングを提供します。

Exceptions ディレクトリ

Exceptionsディレクトリは、application の全ての custom 例外を含んでいます。これらの例外は、make:exception command を使用して生成することができます。

Http ディレクトリ

Http ディレクトリには、コントローラー、 middleware 、そしてフォームリクエストが含まれています。 application に入るリクエストを handle するためのほぼ全てのロジックは、このディレクトリに配置されます。

Jobs ディレクトリ

このディレクトリは、default では存在しませんが、make:job Artisan command を実行すると、あなたのために作成されます。Jobsディレクトリは、あなたの application のためのqueueable jobsを収容しています。jobs は、あなたの application によって queue に入れられるか、または現在の request ライフサイクル内で同期的に実行されることがあります。現在の request 中に同期的に実行される jobs は、command pattern の実装であるため、"commands"と呼ばれることもあります。

Listeners ディレクトリ

このディレクトリは default では存在しないが、event:generateまたはmake:listenerという Artisan コマンドを実行すると作成されます。Listenersディレクトリには、あなたのeventsを handle するクラスが含まれています。 Event listeners は event のインスタンスを受け取り、 event が発火された response にロジックを実行します。例えば、UserRegisteredという event はSendWelcomeEmailリスナーによって処理されるかもしれません。

Mail ディレクトリ

このディレクトリは default としては存在しませんが、make:mail Artisan command を実行すると作成されます。Mailディレクトリには、あなたの application から送信される電子メールを表すクラスがすべて含まれています。 Mail オブジェクトを使用すると、 email の構築に関するすべてのロジックを、 single でシンプルな class にカプセル化して、Mail::send method を使用して送信することができます。

Models ディレクトリ

Modelsディレクトリには、すべてのEloquent model classが含まれています。 Laravel に含まれている Eloquent ORM は、あなたの database で作業するための美しくシンプルな ActiveRecord の実装を提供します。各 database のテーブルには、そのテーブルと対話するための対応する"Model"があります。 Models は、テーブル内の data の query と、テーブルへの新しいレコードの insert を可能にします。

Notifications ディレクトリ

このディレクトリは default では存在しませんが、make:notification Artisan command を実行すると作成されます。Notificationsディレクトリには、あなたの application から送信される"transactional" notificationsが全て含まれています。これらは、あなたの application 内で発生する events についてのシンプルな notifications などです。Laravel の notification feature は、 email 、 Slack 、SMS、または database に保存されるなど、さまざまなドライバーを介して notifications を送信することを抽象化します。

Policies ディレクトリ

このディレクトリは default としては存在しませんが、make:policyの Artisan command を実行すると作成されます。Policiesディレクトリは、あなたの application のためのauthorization policy classesを含んでいます。 Policies は、 user が resource に対して特定の action を実行できるかどうかを決定するために使用されます。

Providers ディレクトリ

Providersディレクトリには、あなたの application のためのすべてのservice providersが含まれています。 service providers は、service container ー内に services をバインドしたり、events を登録したり、またはその他のタスクを実行して、あなたの application が受信 request を受け入れる準備をします。

新たな Laravel application では、このディレクトリには既にAppServiceProviderが含まれています。必要に応じて、自分自身の providers をこのディレクトリに追加することができます。

ルールディレクトリ

このディレクトリは default では存在しませんが、make:rule Artisan command を実行すると作成されます。Rulesディレクトリには、application の customvalidation ルール object が含まれています。ルールは、複雑な validation ロジックをシンプルな object にカプセル化するために使用されます。詳細については、validation ドキュメンテーションをご覧ください。

当社サイトでは、Cookie を使用しています。各規約をご確認の上ご利用ください:
Cookie Policy, Privacy Policy および Terms of Use