開始主題之前,在controllers目錄下新建兩個檔案:
服務容器是一種設計模式,它集中管理物件之間的依賴關係,提供一種結構化的方式來存取和管理應用程式中的服務。
它充當網站內服務的註冊表。
首先在Core目錄下建立一個名為Controller.php的檔案。在此初始化 Container 類,該類別負責管理服務綁定和解析。
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的接口,為存取服務提供方便的接口。
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);
在此,引導過程:
可以使用 App::resolve() 方法從控制器中的容器解析服務。
$db = App::resolve('Core\Database');
現在服務容器已正確構建,您可以看到該項目運作良好。
希望您已經清楚地理解了。
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3