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