gidato/laravel-container-extensions

Laravel 容器和应用的扩展

v0.1.0 2020-03-04 08:56 UTC

This package is auto-updated.

Last update: 2024-09-29 05:22:19 UTC


README


composer require gidato/laravel-container-extensions

然后您需要在 \bootstrap\app.php 中找到以下行

$app = new Illuminate\Foundation\Application(
    $_ENV['APP_BASE_PATH'] ?? dirname(__DIR__)
);

并按照以下方式修改

$app = new Gidato\Container\Application(
    $_ENV['APP_BASE_PATH'] ?? dirname(__DIR__)
);

嵌套容器

在容器内部可以创建并使用另一个容器,从而有效地为绑定的元素命名空间。

这允许应用程序的特定部分直接与特定容器相关联。

要访问子容器,可以使用 app()->container("容器名称"),然后在此级别绑定东西。

然后可以通过使用 $container->getAllBound() 来检索直接绑定的类(如果您想要所有类),这将只返回特定绑定的类/对象,而不会提供任何可以动态创建的对象。

如果您想排除其他嵌套容器,请使用 $container->getAllBound($recursive = true)

使用工厂创建绑定

而不是在提供者中创建闭包,这允许在工厂类中完成创建,这样工厂类就可以与类一起存在,使其更容易访问。

工厂必须实现 Gidato\Container\Contract\FactoryContract,这要求类是可调用的。方法应定义如下

public function __invoke(\Psr\Container\ContainerInterface $container, string $requestedName, array $parameters = []);

然后,在提供者中,可以使用以下方式绑定类

$app->singletonFromFactory($abstract, $factoryClass)
$app->bindFromFactory($abstract, $factoryClass, $shared = false)

许可证

本软件是开源软件,根据 MIT 许可证 许可。