andrewalf/service_providers

为 slim 框架提供的类似 Laravel 的服务提供者

dev-master 2018-05-30 21:44 UTC

This package is not auto-updated.

Last update: 2024-09-29 06:08:50 UTC


README

此包是为 Slim 定制的,以使其配置更佳,但您也可以在任何项目中使用它。此包与框架无关,它仅依赖于 PSR-11 容器接口。

安装

composer require andrewalf/service_providers

运行测试

composer run tests

用法

  1. 在您的项目根目录中创建 service_providers.php 文件。此文件应返回包含服务提供者完整类名的数组。
  2. 在您的 index.php 文件中,将此文件作为变量引入。
  3. (如果未使用 RouteServiceProvider,则跳过此步骤) 在您的 index.php 文件中,将您的应用实例添加到 DI 容器中,键为 "app"。
  4. 创建 ServiceProviderRunner 实例,传入 psr-11 DI 容器和提供者数组作为构造函数参数。调用它的 runProviders 方法

现在您可以添加您自己的服务提供者。它们有两个方法: registerboot。在 register 方法中,首先调用该方法,应在容器中注册依赖项。在 boot 方法中,您可以自由修改和配置您的应用。例如,您可以在 EventListenersServiceProvider 中保留所有监听器附加项。

Slim 3 框架的用法示例。

index.php

    $app = new \Slim\App($settings);
    $container = $app->getContainer();
    
    // we use RouteServiceProvider
    $container['app'] = function ($c) use ($app) {
        return $app;
    };
    
    $providersArray = require '../service_providers.php';
    (new \Andrewalf\ServiceProviderRunner($app->getContainer(), $providersArray))->runProviders();

service_providers.php

    return [
        \Andrewalf\RouteServiceProvider::class,
        \Andrewalf\AppServiceProvider::class
    ];

RouteServiceProvider

这主要是为 Slim 定制的。此提供者从分离的文件加载应用路由:web.php 和 api.php。这些文件的路径在提供者中是硬编码的。您可以随意复制并修改它。

待办事项:复制包提供者到您的提供者目录的 composer 命令。