sassnowski / yii-provider-registry
以 Laravel 为灵感,将服务注册到您的 Yii 应用程序中。
1.0.0
2016-05-12 10:30 UTC
This package is auto-updated.
Last update: 2024-08-29 04:09:11 UTC
README
提供了一种以 Laravel 为灵感,将服务注册到 Yii 应用程序中的方法。
安装
通过 Composer 需要该库。
composer require sassnowski/yii-provider-registry
设置
将 web/index.php
中的最后几行更改为以下内容
$app = new yii\web\Application($config) (new \Sassnowski\Yii2\ProviderRegistry\ProviderRegistry(\Yii::$container))->bootstrap(); $app->run();
在您的应用程序根目录中创建一个 bootstrap
文件夹,并将一个 services.php
文件放入其中。此文件应仅返回一个 Bootstrapper 类的数组。
<?php return [ \Acme\Providers\MyProvider::class, \Acme\Providers\AnotherProvider::class, \Acme\Providers\Mailing\MailProvider::class, ];
这些类应该实现一个 bootstrap
方法。此方法将在启动过程中被调用,并接收应用程序的 DI 容器作为其唯一参数。然后您可以在该方法内部将类注册到 Yii DI 容器中。
<?php namespace Acme\Providers; use yii\di\Container; class MyProvider { public function bootstrap(Container $container) { $container->set( \Acme\Services\MySickServiceInterface::class, \Acme\Services\MySickServiceImplementation::class ); } }
这就完成了!现在您可以在应用程序的任何地方使用服务,无论是通过 get
方法显式从容器中解析,还是在构造函数中通过类型提示。有关所有可能性的完整列表,请参阅 [Yii 文档][https://yiiframework.cn/doc-2.0/guide-concept-di-container.html]!
许可证
MIT