ホームページ  >  記事  >  バックエンド開発  >  Laravel5.4でIoCコンテナにカスタムクラスを追加する方法を詳しく解説

Laravel5.4でIoCコンテナにカスタムクラスを追加する方法を詳しく解説

*文
*文オリジナル
2018-01-03 15:31:531477ブラウズ

Laravel は使いやすいですが、理解するのは簡単ではないフレームワークです。なぜシンプルではないのでしょうか?いわゆる「高度な」概念が多く含まれており、その中でも依存性注入 (DI) と Ioc コンテナーが中心的な内容の 1 つであるためです。この記事では、Laravel 5.4 での IoC コンテナへのカスタム クラスの追加に関する関連情報を主に紹介します。必要な方は参考にしてください。お役に立てれば幸いです。

IoCコンテナ

コンテナとは、文字通り、物を入れておくものを指します。共通の変数、オブジェクトのプロパティなどをコンテナとみなすことができます。コンテナーに何を保持できるかは、コンテナーをどのように定義するかによって決まります。もちろん、テキストや値を保存するのではなく、オブジェクト、オブジェクトの説明 (クラス、インターフェイス) を保存したり、オブジェクトのコールバックを提供したりするコンテナーが存在します。このコンテナーを通じて、多くの高度な機能を実装できます。その中で最も重要なものは次のとおりです。よく言われるのが「デカップリング」と「依存性注入(DI)」です。

IoC コンテナ - Laravel のコア

Laravel のコアは IoC コンテナであり、ドキュメントによると、名前が示すように、このコンテナは全体で必要な一連のサービスを提供します。フレームワーク。初心者としては、この概念を理解するのが難しい人も多いと思います。そのため、いくつかの基本的な内容から始めて、オブジェクト指向開発における依存関係の生成と解決を理解することで、「依存関係注入」のベールを徐々に明らかにする予定です。デザインのコンセプト。

この記事では、Laravel 5.4 の IoC コンテナーへのカスタム クラスの追加に関する関連コンテンツを詳細に紹介し、皆さんの参考と学習のために共有します。以下では多くを述べませんが、詳細な紹介を見てみましょう。

IoC コンテナはカスタム クラスを追加します

1. トランザクション クラス app/Trade/Sale.php

<?php
namespace App\Trade;
class Sale
{
public function exchange()
{
 dd(&#39;交易成功啦!&#39;);
}
}

2 を Providers ディレクトリに作成します

php artisan make:provider TradeServiceProvider

3次に、TradeServiceProvider.php

/**
 * Register the application services.
 *
 * @return void
 */
public function register()
{
 //
 $this->app->bind(&#39;trade&#39;,function(){
  return new Sale();
 });
}

の register メソッドでクラスをバインドします。 次に、config/app.php,

App\Providers\TradeServiceProvider::class,

の下のプロバイダー配列に行を追加します。それから、それをルートに追加します

Route::get(&#39;/&#39;,function (){
$trade = app(&#39;trade&#39;);
dd($trade->exchange());
}

出力結果: トランザクションは成功しました!

6. この時点で、独自のクラスを IoC コンテナーに追加しました

関連する推奨事項: Laravel 5 のパフォーマンスを向上させるいくつかの実践的な方法ヒント

Laravel Redis の複数のプロセスが同時にキューを取得する際の問題

laravel の APP インターフェイス (API) の作成

以上がLaravel5.4でIoCコンテナにカスタムクラスを追加する方法を詳しく解説の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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