skillup

技術ブログ

PHP

フレームワークの基本的なアーキテクチャについて

投稿日:2020年2月16日 更新日:

フレームワークで大事なのは基本的な文法ではなく、構造の理解だと思います。

PHPですとCake,Laravel,Synfonyなどありますが、1つのものでしっかりと理解できていれば他のものもそれほど問題ありません。

直近ではLaravelを使っておりましたが、大事なのはLaravelの文法ではなく、Laravelが持っているフレームワークの構造への理解だと思います。

Laravelを触った当初、それぞれの基本的な使い方は理解できていましたが、正しく理解して使うといったレベルには落とし込めていませんでした。

直近の現場ではそこそこ触らせていただいたこともあり、復習してみようと思います。

  1. エントリーポイント
  2. ルータ
  3. 様々なミドルウェア
  4. コントローラ

Laravelだけではありませんが、フレームワークの大まかな構造を記述すると上記のようになるかと思います。

エントリーポイント

httpリクエストがあって、フレームワークが一番最初に読む場所です。

ほとんどのケースで public/index.php になっているのではないでしょうか。

大体のフレームワークでここをドキュメントルートにしており、htaccessで下記のように記述しております。

ファイルがなかったらindex.phpに飛んでねってことですが、そもそもpublic直下にURLとドンピシャのファイルが置いていあることはリソース系のファイル(css,js,画像系など)でもないことからほぼindex.phpにきます。

ちなみに、Laravelがpublic/index.phpでやっていることは

  • 各libraryの読み込み
  • Kernel::class の読み込み

になります。

ちなみにKernel:classでやっていることはざっくり言うと、下記のような流れになります。

全ての処理の規定になる部分ですね。

ルータ

リクエストとコントローラーを結びつける処理です。

一般的にはroutes直下に書かれています。

様々なミドルウェア

リクエストの前の共通処理です。

一般的なものとしては

認証系です。

これ1個1個Controllerにかくの大変ですね・・・

単純なものとしては

ログインしているかしていないかのものもありますが、

  • 特定のIP
  • 特定のURL
  • 特定のフラグ

なんかも多かったりします。

それ以外にもディフォルトで入っていますが、暗号化、セッション処理、共通処理(空文字をnullにするなど)などあったりします。

Laravelではこれらの処理がapp/Http/Middleware直下に有り、さらに複数のミドルウェアがapp/Http/Kernelにまとめられています。

どのルーティングにどのミドルウェアを対応させるかもルーターで対応します。

コントローラー

リクエストの処理を実際に受け付けるところです。

多くの方がここに処理を書いていくと思います。

参考文献

PHPフレームワーク Laravel Webアプリケーション開発 バージョン5.5 LTS対応 (日本語)

Laravelアーキテクチャ 2-1 ライフサイクル

-PHP
-,

執筆者:


comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

関連記事

no image

inputでの複雑な配列の持たせ方

長い間inputって基本的に文字だけで、配列を使うときもcheckbox系の値を入れるだけだと思っていたのですが、かなり複雑な配列も入れることができます。 [crayon-6622d18f64f989 …

no image

streamについて

CSVダウンロード機能などを実装していて、動くコードはかけていますが、内容をよく理解していないことも多かったです。 今回はストリームについて。 ストリームとは 主にデータの総量がわからないケースでよく …

no image

PHPでのコンソール入力に関して

PHPはほとんどの場合、ブラウザでURLをたたいてWEBサーバーから呼び出されるパターンがほとんどです。 ところが、コンソールから使いたい場合などもあるでしょう。 コンソールから入力する場合、なんらか …

no image

guzzle

サイトへのログイン認証などHTTPアクセスを行うライブラリではHTTP2_requestが有名かと思いますが、すでに開発がとまっていることもあり、最近はguzzleというライブラリが使われているようで …

no image

Queueの登録と実際の処理に関して

実務でQueueに絡んだ処理をする機会があったのでメモ。 Contents1 Queueとは2 Laravelでのキュー処理2.1 キューを記録しておく場所2.2 処理を登録する場面(当然まだ処理は行 …

アーカイブ