「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > サービスコンテナブートストラップ: はじめに

サービスコンテナブートストラップ: はじめに

2024 年 8 月 7 日に公開
ブラウズ:401

Service Container Bootstrap: Getting Started

トピックを始める前に、コントローラー ディレクトリに 2 つの新しいファイルを作成します:

  1. destroy.php には、データベースからメモを削除するために使用されるコードが含まれています。
  2. store.php には、フォームとリクエスト メソッドを使用して新しいメモを作成するコードが含まれています。

サービスコンテナの概要

サービス コンテナは、オブジェクト間の依存関係の管理を一元化する設計パターンであり、アプリケーション内のサービスにアクセスして管理するための構造化された方法を提供します。

ウェブサイト内のサービスのレジストリとして機能します。

コンテナクラス

まず、CoreディレクトリにController.phpという名前のファイルを作成します。ここでは、サービス バインディングと解決の管理を担当する Container クラスを初期化します。

  • bind(): サービスをコンテナに登録します。
  • resolve(): コンテナからサービスを取得します。
class Container {
    protected $bindings = [];

    public function bind($key, $resolver) {
        $this->bindings[$key] = $resolver;
    }

    public function resolve($key) {
        if (!array_key_exists($key, $this->bindings)) {
            throw new Exception("No matching binding found for {$key}");
        }
        $resolver = $this->bindings[$key];
        return call_user_func($resolver);
    }
}

アプリクラス

App クラスはコンテナのインターフェイスとして機能し、サービスにアクセスするための便利なインターフェイスを提供します。

  • setContainer(): アプリのコンテナ インスタンスを設定します。
  • container(): コンテナインスタンスを取得します。
  • bind(): サービスをコンテナに登録します。
  • resolve(): コンテナからサービスを取得します。
class App {
    protected static $container;

    public static function setContainer($container) {
        static::$container = $container;
    }

    public static function container() {
        return static::$container;
    }

    public static function bind($key, $resolver) {
        static::container()->bind($key, $resolver);
    }

    public static function resolve($key) {
        return static::container()->resolve($key);
    }
}

ブートストラップ

ブートストラップはアプリケーションのポイントであり、ここですべてがセットアップおよび初期化されます。

$container = new Container();
$container->bind('Core\Database', function () {
    $config = require base_path('config.php');
    return new Database($config['database']);
});
App::setContainer($container);

この中で、ブートストラップ プロセス:

  1. 新しいコンテナ インスタンス ($container) を作成します
  2. バインド メソッドを使用してサービスをコンテナに登録します (例: Core\Database)
  3. App::setContainer($container) を使用してアプリのコンテナを設定します

コントローラ

App::resolve() メソッドを使用して、コントローラーのコンテナからサービスを解決できます。

$db = App::resolve('Core\Database');

これで、サービス コンテナが適切に構築され、プロジェクトが正常に動作していることがわかります。

しっかりと理解していただけたと思います。

リリースステートメント この記事は次の場所に転載されています: https://dev.to/ghulam_mujtaba_247/service-container-bootstrap-getting-started-293j?1 侵害がある場合は、[email protected] に連絡して削除してください。
最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3