ページビューの合計

2023年2月21日火曜日

Laravel: ディレクトリ構成 app

appディレクトリ

appディレクトリは、アプリケーションのコアコードを配置します。このフォルダの詳細は、この後に説明します。

https://readouble.com/laravel/9.x/ja/structure.html

となっています。

重要なので別記事で書いておくことにします。

アプリケーションの主要な部分は、appディレクトリ内に配置します。このディレクトリはデフォルトで、App名前空間のもとに置かれており、PSR-4オートローディング規約を使い、Composerがオートロードしています。
サブディレクトリは以下の5つです。

  • Console
  • Exceptions
  • Http
  • Models
  • Providers  

重要なのはHttpでしょうね。

Httpディレクトリはコントローラやフィルター、リクエストにより構成されています。

クラス生成のためのmake Artisanコマンドを使用することで、さまざまなディレクトリがappディレクトリ内に作成されます。たとえば、app/Jobsディレクトリは、ジョブクラスを生成するmake:job Artisanコマンドを実行するまで存在していません。

ああ、あくまで初期状態では全てのディレクトリが存在するわけではなく、必要に応じてArtisanコマンドで生成するんですね。

使用可能なコマンドを確認するには、php artisan list makeを実行すれば良いそうです。以下を参照して下さい。

Available commands for the "make" namespace:
  make:cast          Create a new custom Eloquent cast class
  make:channel       Create a new channel class
  make:command       Create a new Artisan command
  make:component     Create a new view component class
  make:controller    Create a new controller class
  make:event         Create a new event class
  make:exception     Create a new custom exception class
  make:factory       Create a new model factory
  make:job           Create a new job class
  make:listener      Create a new event listener class
  make:mail          Create a new email class
  make:middleware    Create a new middleware class
  make:migration     Create a new migration file
  make:model         Create a new Eloquent model class
  make:notification  Create a new notification class
  make:observer      Create a new observer class
  make:policy        Create a new policy class
  make:provider      Create a new service provider class
  make:request       Create a new form request class
  make:resource      Create a new resource
  make:rule          Create a new validation rule
  make:scope         Create a new scope class
  make:seeder        Create a new seeder class
  make:test          Create a new test class

 

最初から存在するディレクトリ

Consoleディレクトリ

 アプリケーションの全カスタムArtisanコマンドで構成します。これらのコマンドクラスはmake:commandコマンドにより生成されます。コンソールカーネルもこのディレクトリ内にあり、カスタムArtisanコマンドや、タスクのスケジュールを登録します。

 

Exceptionsディレクトリ 

アプリケーションの例外ハンドラで構成します。また、アプリケーションから投げる例外を用意するにも適した場所でしょう。例外のログやレンダ方法をカスタマイズしたい場合は、このディレクトリのHandlerクラスを修正してください。

 

Httpディレクトリ 

コントローラ、ミドルウェア、フォームリクエストを設置します。アプリケーションへのリクエストを処理するロジックは、ほぼすべてこのディレクトリ内に設置します。

 

Modelsディレクトリ 

すべてのEloquentモデルクラスを設置します。Laravelが提供するEloquent ORMは、データベースを操作するための美しくシンプルなActiveRecordの実装を提供しています。各データベーステーブルには、そのテーブル操作に使う対応する「モデル」があります。モデルを使用し、テーブル内のデータをクエリしたり、テーブルに新しいレコードを挿入したりできます。

 

Providersディレクトリ

アプリケーションの全サービスプロバイダにより構成します。サービスプロバイダは、サービスをコンテナと結合、イベントの登録、もしくはアプリケーションへやってくるリクエストを処理するために必要な用意をするタスクを実行するなど、アプリケーションの事前準備を行います。

インストール直後のアプリケーションでも、このディレクトリは多くのプロパイダーを含んでいます。必要に応じて、自分のプロバイダを自由に追加してください。

 

Artisanコマンドで生成するディレクトリ

Broadcastingディレクトリ

アプリケーションの全ブロードキャストチャンネルクラスで構成します。これらのクラスは、make:channelコマンドで生成されます。このディレクトリはデフォルトでは存在しませんが、最初にチャンネルを生成したときに作成されます。チャンネルについての詳細は、イベントブロードキャストのドキュメントで確認してください。

 

Eventsディレクトリ
 
event:generatemake:event Artisanコマンド実行時に作成されます。Eventsディレクトリは、イベントクラスを設置する場所です。イベントは特定のアクションが起きたことをアプリケーションの別の部分へ知らせるために使われ、柔軟性と分離性を提供しています。
 
Jobsディレクトリ
 
make:job Artisanコマンドを実行すると作成されます。Jobsディレクトリはアプリケーションのキュー投入可能なジョブを置いておく場所です。Jobsはアプリケーションによりキューに投入されるか、もしくは現在のリクエストサイクル中に同期的に実行されます。現在のリクエストサイクル中に同期的に実行するジョブは、コマンドパターンを実装しているため、時に「コマンド」と呼ばれることがあります。


Listenersディレクトリ
 
event:generatemake:listener Artisanコマンドを実行すると、作成されます。Listenersディレクトリには、eventsイベントを処理するクラスを設置します。イベントリスナはイベントインスタンスを受け取り、発行されたイベントへ対応するロジックを実行します。たとえば、UserRegistered(ユーザー登録)イベントは、SendWelcomeEmail(ウェルカムメール送信)リスナにより処理されることになるでしょう。
 
 
Mailディレクトリ
 
make:mail Artisanコマンドを実行すると作成されます。Mailディレクトリには、アプリケーションから送信されるすべてのメールを表すクラスを設置します。メールオブジェクトを使用すると、メールを作成するすべてのロジックを、Mail::sendメソッドを使用して送信できる単一の単純なクラスにカプセル化できます。 
 
 
Notificationsディレクトリ
 
make:notification Artisanコマンドを実行すると作成されます。Notificationsディレクトリには、アプリケーション内で発生するイベントに関する簡単な通知など、アプリケーションが送信するすべての「トランザクション」的な通知を設置します。Laravelの通知機能は、電子メール、Slack、SMSなどのさまざまなドライバを介して通知を送信したり、データベースに保存したりすることを抽象化しています。
 
 
Policiesディレクトリ
 
make:policy Artisanコマンドを実行すると作成されます。Policiesディレクトリには、アプリケーションの認可ポリシークラスを設置します。ポリシーは、ユーザーがリソースに対して特定のアクションを実行できるかどうかを判断するために使用されます。
 
 
Rulesディレクトリ
 
make:rule Artisanコマンドを実行すると、作成されます。Rulesディレクトリは、アプリケーションが使用するバリデーションルールオブジェクトで構成します。ルールは複雑なバリデーションロジックをシンプルなオブジェクトへカプセル化するために使用します。詳細は、バリデーションのドキュメントで確認してください。

 

ずいぶんとたくさんのディレクトリがありますね。

とりあえずMVCに関連するところから始めて、徐々に理解していくことにします。


0 件のコメント:

コメントを投稿

Laravel再学習

フロントエンド系の方に興味が行っていましたがまたバックエンド系に戻ってきました。 Laravelです。 かなり忘れてます、自分のブログを見ながらもう一度です。 今回はMVCパターン、そして Eloquentを使えるようになるのが目的です。 まずはプロジェクト作成から 1. Com...