検索
ホームページPHPフレームワークLaravelLaravelフレームワークにおけるアプリケーションのアーキテクチャの分析

laravel フレームワーク は、ネットワーク サービスからデータベース管理、HTML 生成まですべてを処理するため、「フルスタック」フレームワークと呼ばれます。垂直統合された Web 開発環境は、開発者に優れたエクスペリエンスを提供します。

典型的なプログラマーは、コマンドラインツールを通じて Laravel と対話し、Laravel プロジェクト環境を生成および管理します。 Laravel には、フレームワーク コードとデータベース スキーマの生成に使用できる Artisan と呼ばれる優れたコマンド ライン ツールが付属しており、データベース スキーマの移行からリソースと構成の管理まですべてを処理できます。

設定よりも規約

Laravel の興味深い機能の 1 つは、Web アプリケーションの構築方法にかなり深刻な制限を課していることです。驚くべきことに、これらの制限により、アプリケーションの作成がはるかに簡単になります。その理由を見てみましょう。

Laravel が他の垂直統合開発環境と違うのは、構成よりも規約を強く好むことです。一部の Java、Python、または PHP フレームワークでは多くの XML 構成が必要になることがよくありますが、Laravel では最初からほとんど構成が必要ありません (おそらく PHP では数行だけで済みます)。この構成ファイルの回避により、非常にユニークなものとなり、認識可能なコード構造はすべての Laravel アプリケーションで同じになります。

すべてを支配する 1 つのプロジェクト構造!

当然のことですが、すべての Laravel プロジェクトは基本的に同じディレクトリ構造を持ち、その中のすべてのファイルには指定された場所があります。この合意されたディレクトリ結果を通じて、開発者は「Laravel 方式」に従って作業することが保証されます。

図 1.1 は、Laravel プロジェクトのディレクトリ構造がどのようなものかを示しています:

図 1.1 Laravel プロジェクトのディレクトリ構造

ご覧のとおり、laravel には 4 つのフォルダーしか含まれておらず、これらの 4 つのフォルダーの下にはいくつかのサブフォルダーがあります。このような豊富なサブフォルダーを初めて見るのでしょうか?一つずつ紹介していきます。開発作業のほとんどは app/ フォルダーの下で実行されます。

各フォルダーとファイルの基本的な説明は次のとおりです:

上で述べたように、/app はすべての楽しいことが起こる場所です。このディレクトリの構造を詳しく見てみましょう。

図 1.2 は /app フォルダーの詳細を示しています:

図 1.2 アプリフォルダーの詳細

以下は詳細な紹介です:

最上位フォルダー

Function

app

サイトのコントローラーが含まれます(コントローラー)、モデル (モデル)、ビュー (ビュー)、およびアセット (リソース)。これらは Web サイトを実行する主要なコード部分であり、ほとんどの時間をこれらのコードに費やすことになります。

bootstrap

は、システムの起動時に必要なファイルを保存するために使用されます。これらのファイルは、index.phpなどのファイルによって呼び出されます。

public

このフォルダーは外部から見える唯一のフォルダーであり、Web サーバーのディレクトリを指す必要があります。このディレクトリには、laravelフレームワークのコアブートファイルindex.phpが含まれており、css、JavaScript、画像などのパブリック静的リソースを保存するために使用することもできます。

vendor

は、典型的な Laravel アプリケーションにすべてのサードパーティ コードを保存するために使用されます。これには、Laravel ソース コードとその関連、および事前にパッケージ化された追加機能を含むプラグインが含まれます。

ファイルのフォルダー

関数

/app/config/

アプリケーションのランタイムルール、データベース、セッションなどを設定します。フレームワークのさまざまな側面を変更するための多数の構成ファイルが含まれています。構成ファイルで返されるほとんどのオプションは、PHP 配列に関連付けられています。

/app/config/app.php

ゾーン、ロケール(ロケール)、デバッグモード、固有の暗号化キーなどのさまざまなアプリケーションレベルの設定。

/app/config/auth.php

は、アプリケーション、つまり認証ドライバーでの認証の実行方法を制御します。

/app/config/cache.php

アプリケーションが応答時間を短縮するためにキャッシュを利用する場合は、ここでその機能を設定します。

/app/config/compile.php

ここで、「artisan optimize」コマンドによって要求されたコンパイル済みファイルを含めるために、いくつかの追加クラスを指定できます。これらは、基本的にアプリケーションへのすべてのリクエストに含まれるクラスである必要があります。

/app/config/database.php

には、データベースの関連構成情報、つまりデフォルトのデータベースエンジンと接続情報が含まれています。

/app/config/mail.php

はメール送信エンジン、つまりSMTPサーバーの設定ファイルです。 From: header

/app/ config/ session.php

は、Laravelがユーザーセッション、つまりセッションドライバー、セッションの有効期間を管理する方法を制御します。

/app/config/view.php

テンプレートシステムのその他の設定。

/app/controllers

には、基本的なロジック、データモデルの対話、アプリケーションのビューファイルの読み込みを提供するコントローラークラスが含まれています。

/app/database/migrations/

には、Laravelが現在のデータベースのスキーマを更新し、データベースのすべてのバージョンを同時に同期できるようにするいくつかのPHPクラスが含まれています。移行ファイルは Artisan ツールを使用して生成されます。

/app/database/seeds/

には、Artisanツールがデータベーステーブルにリレーショナルデータを設定できるようにするPHPファイルが含まれています。

/app/lang/

PHP ファイルには、アプリケーションを簡単にローカライズできるようにする文字列の配列が含まれています。デフォルトでは、ディレクトリには英語のページングおよびフォーム検証用の言語行が含まれています。

/app/models/

モデルとは、アプリケーションの情報(データ)とそのデータを操作するためのルールを表すクラスです。ほとんどの場合、データベース内の各テーブルはアプリケーション内のモデルに対応します。アプリケーション ビジネス ロジックの大部分はモデルに集中します。

/app/start/

アーティザン ツールとグローバルおよびローカル コンテキストに関連するカスタム設定が含まれます。

/app/storage/

このディレクトリには、セッション、キャッシュ、コンパイルされたビューテンプレートなどのさまざまなLaravelサービスの一時ファイルが保存されます。このディレクトリは Web サーバー上で書き込み可能である必要があります。このディレクトリは Laravel によって管理されており、私たちは気にしません。

/app/tests/

このフォルダーは、単体テストを実行するのに便利な場所を提供します。 PHPUnit を使用する場合は、Artisan ツールを使用してすべてのテストを一度に実行できます。

/app/views/

このフォルダーには、コントローラーまたはルートで使用される HTML テンプレートが含まれています。このフォルダーにはテンプレート ファイルのみを配置できることに注意してください。 CSS、JavaScript、画像ファイルなどの他の静的リソース ファイルは、/public フォルダーに配置する必要があります。

/app/routes.php

これはアプリケーションのルーティングファイルで、受信リクエストをルートによって処理されるクロージャ、コントローラ、アクションに接続する方法をLaravelに指示するルーティングルールが含まれています。このファイルには、エラー ページのイベント宣言など、ビュー コンポーザーの定義に使用できるいくつかのイベント宣言も含まれています。

/app/filters.php

このファイルには、アプリケーションの結果を変更するために使用できるさまざまなアプリケーションとルートのフィルタリング メソッドが含まれています。 Laravel には、アクセス制御と XSS 保護のための事前定義されたフィルターがいくつかあります。

フォルダーの作成と名前付けについてよく考えてください。そうすれば、優れたファイル システムを備えたアプリケーションが得られます。

ここで得られるもの: MVC

Model-View-Controller (MVC)

Laravel アプリケーションがどのように動作するかの高レベルの概要を見てみましょう。標準の Laravel アプリケーション構造は、アプリケーション ディレクトリ app/ で構成されており、このディレクトリには、models/、views/、およびcontrollers/の 3 つのサブディレクトリが含まれていることに気づいたかもしれません。これは、Laravel がモデル ビュー コントローラー (MVC) アーキテクチャ パターンに従っていることを示しています。これにより、グラフィカル ユーザー インターフェイス (GUI) からの論理関係を表示するための「ビジネス ロジック」入力が強制的に分離されます。 Laravel Web アプリケーションの場合、ビジネス ロジックは通常、ユーザー、ブログ投稿などのデータ モデルで構成されます。 GUI はブラウザ上の単なる Web ページです。 MVC デザイン パターンは、Web 開発の分野で非常に人気があります。

MVCパターンの3つのコンポーネント:

  • Model

  • View

  • Controller

[注] MVCの3つについては原著者がここで詳しく紹介しています これらのコンポーネントはスペースの関係でここでは紹介しておりません。

Laravel コンポーネント

一般的な Laravel アプリケーションには、以下に示すように、上記の MVC コンポーネントが含まれています:

Laravelフレームワークにおけるアプリケーションのアーキテクチャの分析

Laravel と対話するとき、ブラウザはリクエストを送信し、Web サーバーはリクエストを受信します。 Laravelルーティングエンジンに渡されます。 Laravel ルーティングはリクエストを受信し、ルートの URL パターンに基づいて適切なコントローラー クラス メソッドにリダイレクトします。

その後、コントローラークラスが引き継ぎます。場合によっては、コントローラーは、HTML に変換されてブラウザーに送り返されるテンプレートであるビューをすぐにレンダリングします。動的 Web サイトではより一般的に、コントローラーはモデルと対話します。モデルは、アプリケーション内の要素 (ユーザー、ブログ投稿など) を表す PHP オブジェクトであり、データベースとの通信を担当します。モデルを呼び出した後、コントローラーは最終ビュー (HTML、CSS、および画像) をレンダリングし、完全な Web ページをユーザーのブラウザーに返します。

Laravel は、モデル、ビュー、コントローラーを異なるディレクトリの個別のコード ファイルに保存することで、これらの要素をかなり独立した状態に保つ必要があるという概念を推進しています。ここでLaravelのディレクトリ構造が登場します。

MVC のようなデザイン パターンは、開発者の作業を楽にするために作成されました。この点は、パターンを使用しない PHP よりも Laravel の方が優れている点です。この議論が抽象的であっても、心配しないでください。 Laravel を使い始めると、自分がデザインパターンで作業していることにさえ気づかないでしょう。しばらくすると自然になります。

データモデル

データモデルはあらゆるアプリケーションの基盤であり、アプリケーションのビジネスロジックを記述します。データはすべてデータベース テーブルで表されます。 Laravel は、データベースへのアクセスを簡素化するためのいくつかのテクニックを提供します。

Laravelは、データベース内のテーブル行を簡単に操作できるPHPオブジェクトに変換することで、アプリケーションのデータモデルとデータベーステーブルを接続します。また、ビジネス ルールを適用したり、アプリケーション内のさまざまなデータ モデル間の関係を記述したりすることもできます。たとえば、ある人の家族関係は、Laravel Eloquent OR/M を使用して次のように説明できます。

class Person extends Eloquent
{
    public function mother()
    {
        return $this->belongsTo('Mother');
    }

    public function father()
    {
        return $this->belongsTo('Father');
    }

    public function spouse()
    {
        return $this->hasOne('Spouse');
    }

    public function sisters()
    {
        return $this->hasMany('Sister');
    }

    public function brothers()
    {
        return $this->hasMany('Brother');
    }
}

上記がこの記事の全内容です。laravel の内容については、laravel フレームワークの紹介を参照してください。チュートリアル。

おすすめ関連記事:

LaravelフレームワークのAutoloaderモジュールのコード分析

おすすめコース:

2017年最新のLaravelビデオチュートリアルおすすめ5本

以上がLaravelフレームワークにおけるアプリケーションのアーキテクチャの分析の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
インクルージョンの幻想:リモートワークにおける孤立と孤独への対処インクルージョンの幻想:リモートワークにおける孤立と孤独への対処Apr 25, 2025 am 12:28 AM

トコンバティソルメントアンドロネリネスは、レモであり、regultionを実現し、等間grothopportunitionを提供し、効率的に使用します

フルスタック開発のためのLaravel:包括的なガイドフルスタック開発のためのLaravel:包括的なガイドApr 25, 2025 am 12:27 AM

laravelispopopularfulfull-stackdevelopment becuseiTOfferseamlessbbackEndpowendPowerandfflexibility.1)simplifyDatabaseItteractions.2)asbladetemplatingEngineallowsforclean、dynamictmltemplates.3)Laravelmix

ビデオ会議対決:リモート会議に適したプラットフォームを選択するビデオ会議対決:リモート会議に適したプラットフォームを選択するApr 25, 2025 am 12:26 AM

ビデオ会議プラットフォームを選択する際の重要な要因には、ユーザーインターフェイス、セキュリティ、および機能が含まれます。 1)ズームなど、ユーザーインターフェイスは直感的である必要があります。 2)セキュリティに注意を払う必要があり、Microsoftチームはエンドツーエンドの暗号化を提供します。 3)機能は要件を一致させる必要があり、Googlemeetは短い会議に適しており、Ciscowebexは高度なコラボレーションツールを提供します。

最新のLaravelと互換性のあるデータベースバージョンは何ですか?最新のLaravelと互換性のあるデータベースバージョンは何ですか?Apr 25, 2025 am 12:25 AM

Laravel10の最新バージョンは、MySQL 5.7以降、PostgreSQL 9.6以降、SQLite 3.8.8以降、SQLServer 2017以降と互換性があります。これらのバージョンは、クエリとストレージの効率を向上させるMySQL5.7のJSONデータ型など、LaravelのORM機能をサポートするため選択されます。

Laravelをフルスタックのフレームワークとして使用することの利点Laravelをフルスタックのフレームワークとして使用することの利点Apr 25, 2025 am 12:24 AM

laravelisanexcellentchoicefulfulffull stackdevelopmentduetoitsotsobustfeaturesofuse.1)そのImprifiescomplextaskswithnphpsynthenphpsynpsuls likebladeforfront-dandeloquentormforback-end.2)laravelmixandartisantystemを拡張するlaravedecosystem

Laravelの最新バージョンは何ですか?Laravelの最新バージョンは何ですか?Apr 24, 2025 pm 05:17 PM

laravel10、releaseonfebruary7,2023、isThelateStversion.itfeatures:1)改善された改善とnewReportmethexceptionhandler、2)拡張サプロポートフォーフプP8.1FeatureslikeNums、and3)

最新のLaravelバージョンはどのように開発を簡素化しますか?最新のLaravelバージョンはどのように開発を簡素化しますか?Apr 24, 2025 pm 05:01 PM

ThelatestlaravelversionEnhancesDevelopments:1)SimplifiedRoutingImplicitModelbinding、2)EnhancedEloquentCapabilitiesWithNewQueryMethods、and3)supportformdernphpeaturesliekenamedarguments、makedingdingingindenjoyableを改善しました。

最新のLaravelバージョンのリリースノートはどこにありますか?最新のLaravelバージョンのリリースノートはどこにありますか?Apr 24, 2025 pm 04:53 PM

laravel.com/docsで最新のLaravelバージョンのリリースノートを見つけることができます。 1)リリースノート新しい機能、バグの修正、改善に関する詳細情報を提供します。 2)新しい機能の適用を理解するのに役立つ例と説明が含まれています。 3)新機能の潜在的な複雑さと後方互換性の問題に注意してください。 4)リリースノートの定期的なレビューは、それを更新し続け、イノベーションを刺激することができます。

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

SecLists

SecLists

SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。

mPDF

mPDF

mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。

SublimeText3 Linux 新バージョン

SublimeText3 Linux 新バージョン

SublimeText3 Linux 最新バージョン

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

DVWA

DVWA

Damn Vulnerable Web App (DVWA) は、非常に脆弱な PHP/MySQL Web アプリケーションです。その主な目的は、セキュリティ専門家が法的環境でスキルとツールをテストするのに役立ち、Web 開発者が Web アプリケーションを保護するプロセスをより深く理解できるようにし、教師/生徒が教室環境で Web アプリケーションを教え/学習できるようにすることです。安全。 DVWA の目標は、シンプルでわかりやすいインターフェイスを通じて、さまざまな難易度で最も一般的な Web 脆弱性のいくつかを実践することです。このソフトウェアは、