开始主题之前,在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