首頁  >  文章  >  後端開發  >  服務容器引導程式:入門

服務容器引導程式:入門

PHPz
PHPz原創
2024-07-16 16:21:59587瀏覽

Service Container Bootstrap: Getting Started

開始主題之前,在controllers目錄下建立兩個新檔案:

  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類別充當Container的接口,為存取服務提供方便的接口。

  • setContainer():設定App的容器實例。
  • 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);
    }
}

引導程式

Bootstrap 是應用程式的一個點,一切都在此處設定和初始化。

$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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn