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

APIに関して

RESTAPIのルーティングで気をつけることなんぞを。 直近のプロジェクトではRESTAPIを作ることが多かったんですが気をつけることなんぞを。 Contents1 仕様書はソースから2 ツール3 命 …

no image

メールパーサー(mailparseとphp-mime-mail-parser)に関して

以前、POP3を使ったメール受信というエントリーでメールパーサーをインストールしたんですが、他のライブラリをインストールする機会があったんでメモ。 https://github.com/php-mim …

no image

PHPのオートローディング

大規模開発では扱うファイルが増えるため、必要なクラスの読み込みが煩雑になるケースが多いです。 Contents1 従来のPHPのファイルのロード2 オートローディングとは3 サンプルソース4 メモ5 …

no image

phpenv+php-build 複数のPHPのversionを使い分け

使っているサーバーで別バージョンのphp(7.2.0)を使いたかったのでphpenv&php-buildをインストール。 Contents1 phpenvのインストール2 php insta …

no image

cakePHP CSVのインポートとエクスポート

本日もcakeネタです。 CSVインポート&エクスポート CSVのインポートとエクスポートについて。 かなりいろいろなプラグインがあるようですが、一番楽なのはbehaviorを使う手法のようです。 a …