目次
laravel facade の用途
ホームページ PHPフレームワーク Laravel laravelファサードの用途は何ですか?

laravelファサードの用途は何ですか?

Feb 15, 2022 am 11:08 AM
laravel

laravel では、ファサードはアプリケーションの IoC サービス コンテナのクラスに静的インターフェイスを提供するために使用されます。Laravel のファサードは、サービス コンテナ内の基礎となるクラスの静的プロキシとして機能します。従来の静的メソッドと比較して、次の機能が提供されます。メンテナンス中に構文をテストしやすくなります。

laravelファサードの用途は何ですか?

このチュートリアルの動作環境: Windows 10 システム、Laravel 6 バージョン、DELL G3 コンピューター。

laravel facade の用途

はじめに

Facades は、アプリケーションの IoC サービス コンテナ クラスに静的インターフェイスを提供します。 Laravel にはキャッシュなどのいくつかのファサードが付属しています。 Laravel のファサードは、サービス コンテナ内の基礎となるクラスの「静的プロキシ」として機能し、従来の静的メソッドと比較して、メンテナンス中にテストが容易で、より柔軟で、簡潔で洗練された構文を提供できます。

説明

Laravel アプリケーションのコンテキストでは、Facade はクラスです。このクラスを使用すると、コンテナからオブジェクトにアクセスできます。この関数はクラスで定義されたファサード。 Laravel のファサードと自分で定義したファサードは、Facade クラスを継承します。

Facade クラスは getFacadeAccessor という 1 つのメソッドを実装するだけで済みます。コンテナ内で解決する必要があるものはすべて、このメソッドで実行されます。 Facade 基本クラスは __callStatic() マジック メソッドを使用します。これにより、Facade から解決されたオブジェクトへの呼び出しが遅延する可能性があります。

したがって、Facade を使用して次のように呼び出すと: Cache:get、laravel は Ioc サービス コンテナからキャッシュ管理クラスを解決し、このクラスの get メソッドを呼び出します。 Laravel の Facade を使用してサービスを見つけることができます。これは、Laravel の IoC サービス コンテナーを使用するためのより便利な構文です。

利点

Facade には多くの利点があり、シンプルで覚えやすい構文を提供するため、長いクラス名を覚えなくても Laravel が提供するものを使用できます。さらに、機能的な特徴により、PHP の動的メソッドを独自に使用するため、テストが容易になります。

実際の使用法

次の例は、Laravel のキャッシュ システムを呼び出すために使用されます。まずは次のコード行を見てください。これは Cache クラスの get という静的メソッドへの直接呼び出しであると思われるかもしれません。

$value = Cache::get('key');
ログイン後にコピー

ただし、Illuminate\Support\Facades\Cache クラスを見ると、get static メソッドがまったくないことがわかります:

class Cache extends Facade {
    /**
     * Get the registered name of the component.
     *
     * @return string
     */
    protected static function getFacadeAccessor() { return 'cache'; }
}
ログイン後にコピー

Cache クラスは Facade ベースを継承します。 class 。 getFacadeAccessor() というメソッドを定義します。このメソッドが行うことは Ioc バインディング名 (ここではキャッシュ) を返すことであることに注意してください。

ユーザーがキャッシュファサードの静的メソッドを参照すると、Laravel は Ioc サービスコンテナからのキャッシュバインディングを解決し、オブジェクト上で要求されたメソッドを実行します (これは get メソッドです)。

したがって、Cache::get を呼び出すときの実際の意味は次のとおりです:

$value = $app->make('cache')->get('key');
ログイン後にコピー

Import Facades

注、ファサードを使用する場合は、コントローラーで名前空間が使用されている場合は、Facade クラスをこの名前空間にインポートする必要があります。すべてのファサードはグローバル名前空間の下にあります:

<?php namespace App\Http\Controllers;
use Cache;
class PhotosController extends Controller {
    /**
     * Get all of the application photos.
     *
     * @return Response
     */
    public function index()
    {
        $photos = Cache::get(&#39;photos&#39;);
        //
    }
}
ログイン後にコピー

ファサードの作成

ファサードを作成するには 3 つのことだけが必要です:

  • IoC バインディング。

  • #ファサード クラス。

  • Facade エイリアスの構成。

以下では、クラス PaymentGateway\Payment を定義します。

namespace PaymentGateway;
class Payment {
    public function process()
    {
        //
    }
}
ログイン後にコピー

Ioc サービス コンテナでこのクラスを解決できる必要があります。したがって、最初にサービス プロバイダー バインディングを追加します。

App::bind(&#39;payment&#39;, function()
{
    return new \PaymentGateway\Payment;
});
ログイン後にコピー

このバインディングを登録する最良の方法は、新しいサービス プロバイダーを作成し、PaymentServiceProvider という名前を付けてから、register メソッドにバインドすることです。次に、laravel を設定し、設定ファイル config/app.php にサービスプロバイダーをロードします。

次のステップは、独自の Facade クラスを作成することです:

use Illuminate\Support\Facades\Facade;
class Payment extends Facade {
    protected static function getFacadeAccessor() {
             return &#39;payment&#39;; 
    }
}
ログイン後にコピー

最後に、必要に応じて、Facade にエイリアスを追加し、それを config/app の aliases 配列に入れることができます。 .php 設定ファイルが入っています。

Payment クラスのインスタンスで process メソッドを呼び出すことができます。このように:

Payment::process();
ログイン後にコピー
[関連する推奨事項:

laravel ビデオ チュートリアル ]

以上がlaravelファサードの用途は何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホット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衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

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

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

PHP でオブジェクト リレーショナル マッピング (ORM) を使用してデータベース操作を簡素化するにはどうすればよいですか? PHP でオブジェクト リレーショナル マッピング (ORM) を使用してデータベース操作を簡素化するにはどうすればよいですか? May 07, 2024 am 08:39 AM

PHP でのデータベース操作は、オブジェクトをリレーショナル データベースにマップする ORM を使用して簡素化されます。 Laravel の EloquentORM を使用すると、オブジェクト指向構文を使用してデータベースと対話できます。モデル クラスを定義したり、Eloquent メソッドを使用したり、実際にブログ システムを構築したりすることで ORM を使用できます。

Laravel と CodeIgniter の最新バージョンの比較 Laravel と CodeIgniter の最新バージョンの比較 Jun 05, 2024 pm 05:29 PM

Laravel 9 と CodeIgniter 4 の最新バージョンでは、更新された機能と改善が提供されます。 Laravel9はMVCアーキテクチャを採用しており、データベース移行、認証、テンプレートエンジンなどの機能を提供します。 CodeIgniter4 は、HMVC アーキテクチャを使用してルーティング、ORM、およびキャッシュを提供します。パフォーマンスの面では、Laravel9 のサービスプロバイダーベースの設計パターンと CodeIgniter4 の軽量フレームワークにより、優れたパフォーマンスが得られます。実際のアプリケーションでは、Laravel9 は柔軟性と強力な機能を必要とする複雑なプロジェクトに適しており、CodeIgniter4 は迅速な開発や小規模なアプリケーションに適しています。

Laravel と CodeIgniter のデータ処理機能はどのように比較されますか? Laravel と CodeIgniter のデータ処理機能はどのように比較されますか? Jun 01, 2024 pm 01:34 PM

Laravel と CodeIgniter のデータ処理機能を比較します。 ORM: Laravel はクラスとオブジェクトのリレーショナル マッピングを提供する EloquentORM を使用しますが、CodeIgniter は ActiveRecord を使用してデータベース モデルを PHP クラスのサブクラスとして表します。クエリビルダー: Laravel には柔軟なチェーンクエリ API がありますが、CodeIgniter のクエリビルダーはよりシンプルで配列ベースです。データ検証: Laravel はカスタム検証ルールをサポートする Validator クラスを提供しますが、CodeIgniter には組み込みの検証関数が少なく、カスタム ルールの手動コーディングが必要です。実践例:ユーザー登録例はLarを示しています

Laravel - アーティザンコマンド Laravel - アーティザンコマンド Aug 27, 2024 am 10:51 AM

Laravel - アーティザン コマンド - Laravel 5.7 には、新しいコマンドを処理およびテストするための新しい方法が付属しています。これには職人コマンドをテストする新しい機能が含まれており、そのデモについては以下で説明します。

Laravel と CodeIgniter ではどちらが初心者に優しいでしょうか? Laravel と CodeIgniter ではどちらが初心者に優しいでしょうか? Jun 05, 2024 pm 07:50 PM

初心者にとって、CodeIgniter は学習曲線が緩やかで機能は少ないですが、基本的なニーズはカバーしています。 Laravel は幅広い機能セットを提供しますが、学習曲線はわずかに急になります。パフォーマンスの点では、Laravel と CodeIgniter はどちらも良好なパフォーマンスを示します。 Laravel にはより広範なドキュメントとアクティブなコミュニティ サポートがあり、CodeIgniter はよりシンプルで軽量で、強力なセキュリティ機能を備えています。ブログアプリケーションを構築する実際のケースでは、Laravel の EloquentORM を使用するとデータ操作が簡素化されますが、CodeIgniter ではより手動の構成が必要になります。

Laravel と CodeIgniter: 大規模プロジェクトにはどちらのフレームワークが適していますか? Laravel と CodeIgniter: 大規模プロジェクトにはどちらのフレームワークが適していますか? Jun 04, 2024 am 09:09 AM

大規模プロジェクト用のフレームワークを選択する場合、Laravel と CodeIgniter にはそれぞれ独自の利点があります。 Laravel はエンタープライズレベルのアプリケーション向けに設計されており、モジュール設計、依存関係の注入、強力な機能セットを提供します。 CodeIgniter は、速度と使いやすさを重視した、小規模から中規模のプロジェクトに適した軽量フレームワークです。複雑な要件と多数のユーザーを伴う大規模なプロジェクトには、Laravel のパワーとスケーラビリティがより適しています。単純なプロジェクトやリソースが限られている状況では、CodeIgniter の軽量で迅速な開発機能がより理想的です。

Laravel と CodeIgniter: 小規模プロジェクトにはどちらのフレームワークが適していますか? Laravel と CodeIgniter: 小規模プロジェクトにはどちらのフレームワークが適していますか? Jun 04, 2024 pm 05:29 PM

小規模なプロジェクトの場合、Laravel は強力な機能とセキュリティを必要とする大規模なプロジェクトに適しています。 CodeIgniter は、軽量さと使いやすさを必要とする非常に小規模なプロジェクトに適しています。

PHP エンタープライズ アプリケーション マイクロサービス アーキテクチャ設計に関する Q&A PHP エンタープライズ アプリケーション マイクロサービス アーキテクチャ設計に関する Q&A May 07, 2024 am 09:36 AM

マイクロサービス アーキテクチャは、PHP フレームワーク (Symfony や Laravel など) を使用してマイクロサービスを実装し、RESTful 原則と標準データ形式に従って API を設計します。マイクロサービスはメッセージ キュー、HTTP リクエスト、または gRPC を介して通信し、監視とトラブルシューティングに Prometheus や ELKStack などのツールを使用します。

See all articles