服务提供器

fastd 为何如此强大与灵活,更多是因为有服务提供器的存在,因此用户可以很灵活很自由地创造自己的轮子并且无缝整合,为此,我们也内置了很多提高效率的轮子。

创建服务提供器步骤如下:

  • 创建服务对象
  • 注册到配置

安装已有提供器

  1. $ composer require fastd/viewer -vvv

安装完毕之后,将服务提供器注册到配置当中

  1. <?php
  2. return [
  3. /**
  4. * Bootstrap service.
  5. */
  6. 'services' => [
  7. \FastD\ServiceProvider\RouteServiceProvider::class,
  8. \FastD\ServiceProvider\LoggerServiceProvider::class,
  9. \FastD\ServiceProvider\DatabaseServiceProvider::class,
  10. \FastD\ServiceProvider\CacheServiceProvider::class,
  11. \FastD\ServiceProvider\MoltenServiceProvider::class,
  12. // 添加到配置
  13. \FastD\Viewer\Viewer::class,
  14. ],
  15. ];

如果对于框架执行流程不是很熟悉的朋友,建议追加到已存在服务提供器的后面。

实现服务提供器

服务提供器可以帮助咱们添加命令行,中间件,路由,甚至可以改变应用程序的启动流程,达到自由扩展与调整的目的。

假如我们需要添加多一个配置文件,但是又不想在配置文件中进行修改,那么服务提供器就可以帮到你:

实现: \FastD\Container\ServiceProviderInterface::register(\FastD\Container\Container $container)

  1. <?php
  2. namespace ServiceProvider;
  3. use FastD\Container\Container;
  4. use FastD\Container\ServiceProviderInterface;
  5. class HelloServiceProvider implements ServiceProviderInterface
  6. {
  7. /**
  8. * @param Container $container
  9. * @return mixed
  10. */
  11. public function register(Container $container)
  12. {
  13. config()->load(app()->getPath().'/config/custom.php');
  14. }
  15. }

查看我们添加的调整是否有效:

$ php bin/console config custom.php
{
    "foo": "bar"
}

至此,你已经学会了如何构建自己服务提供器了。

如果有需要将工具打包成服务提供器,然后根据上述步骤注册到配置中即可。