bnf / service-provider-bridge-bundle
此 Symfony Bundle 允许 Symfony 应用程序使用在 container-interop/service-provider 中定义的服务提供者
3.0.0
2018-09-12 12:44 UTC
Requires
- php: >=7.1.0
- container-interop/service-provider: ~0.4.0
- psr/container: ^1.0
- symfony/dependency-injection: ^4.1
- symfony/http-kernel: ^4.1
Requires (Dev)
- bnf/di: ^0.1.2
- php-coveralls/php-coveralls: ^2.0
- phpunit/phpunit: ^6.5 || ^7.0
This package is auto-updated.
Last update: 2024-09-13 02:21:46 UTC
README
container-interop/service-provider 桥接 Bundle
将 service-provider
(如 container-interop
中定义)导入到 Symfony 应用程序中。
这是从 thecodingmachine/service-provider-bridge-bundle 分支而来,以支持 Symfony 4。感谢 David Négrier。
用法
安装
将 Bnf\Interop\ServiceProviderBridgeBundle\InteropServiceProviderBridgeBundle
添加到您的内核中(即 app/AppKernel.php
文件)。
AppKernel.php
public function registerBundles() { $bundles = [ ... new \Bnf\Interop\ServiceProviderBridgeBundle\InteropServiceProviderBridgeBundle() ]; ... }
用法
您必须在 Bundle 的构造函数中手动声明服务提供者。
AppKernel.php
class AppKernel extends Kernel { public function registerBundles() { $bundles = [ ... new \Bnf\Interop\ServiceProviderBridgeBundle\InteropServiceProviderBridgeBundle([ new MyServiceProvide1(), new MyServiceProvide2() ]) ]; ... } }
或者,您也可以传递服务提供者类的名称。这很有趣,因为服务提供者 Bundle 不会在服务不需要时实例化服务提供者。因此,您可以提高应用程序的性能。
AppKernel.php
public function registerBundles() { $bundles = [ ... new \Bnf\Interop\ServiceProviderBridgeBundle\InteropServiceProviderBridgeBundle([ MyServiceProvide1::class, MyServiceProvide2::class ]) ]; ... }
最后,如果您需要向服务提供者的构造函数传递参数,可以通过传递一个数组来完成。
AppKernel.php
public function registerBundles() { $bundles = [ ... new \Bnf\Interop\ServiceProviderBridgeBundle\InteropServiceProviderBridgeBundle([ [ MyServiceProvide1::class, [ "param1", "param2" ] ], [ MyServiceProvide2::class, [ 42 ] ], ]) ]; ... }