gidato / laravel-container-extensions
Laravel 容器和应用的扩展
v0.1.0
2020-03-04 08:56 UTC
Requires
- laravel/framework: ^7.0
Requires (Dev)
- phpunit/phpunit: ^8.5
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 许可证 许可。