服务提供器

服务提供器提供了自定义扩展和处理的入口,实现依赖于 container

每个提供器都需要实现 FastD\Container\ServiceProviderInterface 接口,实现 register 方法并处理服务提供。

如数据库服务提供器

  1. <?php
  2. namespace FastD\ServiceProvider;
  3. use FastD\Container\Container;
  4. use FastD\Container\ServiceProviderInterface;
  5. use FastD\Pool\DatabasePool;
  6. /**
  7. * Class DatabaseServiceProvider.
  8. */
  9. class DatabaseServiceProvider implements ServiceProviderInterface
  10. {
  11. /**
  12. * @param Container $container
  13. */
  14. public function register(Container $container)
  15. {
  16. $config = config()->get('database', []);
  17. $container->add('database', new DatabasePool($config));
  18. unset($config);
  19. }
  20. }

通过 register 方法,将服务注入到 container 容器当中,提供给全局使用,因为整个 Application 就是一个 容器。具体可查看 Application.php

最终将新增的服务提供器通过 Class::class 的方式添加到应用配置的 services 配置项即可。

整体应用都是基于 "容器" 而构成,如果你对容器的概念还不够熟悉的话,可以去参考: Pimple, PHP-DI, container

若果掌握了解更多容器相关知识,相信可以很好地使用该框架。

如果需要尝试添加或者修改服务提供器,可以参考 DatabaseServiceProvider, database.php, app.php

下一节: Swoole服务器