ホームページ  >  記事  >  バックエンド開発  >  サービスコンテナブートストラップ: はじめに

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

PHPz
PHPzオリジナル
2024-07-16 16:21:59592ブラウズ

Service Container Bootstrap: Getting Started

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

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

サービスコンテナの概要

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

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

コンテナクラス

まず、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. bind メソッドを使用してサービスをコンテナに登録します (例: CoreDatabase)
  3. App::setContainer($container) を使用してアプリのコンテナを設定します

コントローラ

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

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

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

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

以上がサービスコンテナブートストラップ: はじめにの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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