flexsounds/slim-container-builder

从配置文件创建的一个轻量级容器构建工具

dev-master 2017-03-07 19:28 UTC

This package is auto-updated.

Last update: 2024-09-10 06:14:16 UTC


README

Build Status Packagist license Coverage Status

Slim-Container-Builder

一个用于构建您的Slim Framework 3容器的工具。您不需要在PHP中定义容器,只需从配置文件中定义即可。

这不会替换pimple容器,但会为您构建一个。

安装

使用用户composer进行安装

composer require flexsounds/slim-container-builder

安装symfony/yaml以使用yaml文件!

默认使用方法

这将创建一个包含在配置文件中定义的服务的slim框架容器。

$containerBuilder = new \Flexsounds\Slim\ContainerBuilder\ContainerBuilder();
$containerBuilder->setLoader($loader = new \Flexsounds\Slim\ContainerBuilder\Loader\FileLoader('./config'));
$loader->addFile("config.yml");
$app = new Slim\App($containerBuilder->getContainer());

// define your routes here.

$app->run();

配置文件支持

我们使用hassankhan/config来加载配置,它支持YML、XML、JSON等。

您可以从配置文件中导入其他配置文件,无论格式如何。

# config.yml
imports:
  - { Resource: otherconfig.xml }

所有示例都使用yaml表示法创建!

创建您的服务

服务配置的表示法几乎与Symfony相同。这意味着您可以复制您为Symfony应用程序构建的服务配置(请注意,symfony具有比Slim Container Builder更多的功能)

所有服务都必须在services键下定义,并在整个应用程序中共享。Slim框架的默认服务,如settingsrequestresponserouter等,也作为服务可用

基本示例

创建不带任何参数的服务非常简单。

services:
  my.custom.service:
    class: 'App\MyBasicService'

在您的代码中,您可以使用

$app->get('/', function($request, $response){
    $myCustomService = $this->get('my.custom.service');
    // $myCustomService is now an instance of 'App\MyBasicService'
});

非共享服务

默认情况下,所有服务都是共享的。这意味着每次您检索服务时,您都会获得相同的实例。当您想要每次调用服务时都获取一个新的实例时,请使用shared

services:
    my.nonshared.service:
        class: 'App\MyNonSharedService'
        shared: false

依赖注入

您的一些服务可能需要一些依赖注入,这可以通过arguments键来完成。您可以注入任何您想要的东西,甚至是其他服务。

services:
  mailer:
    class: 'Location\To\Mailer'


  newslettermanager:
    class: 'App\Newsletter\NewsletterManager'
    arguments:
      - '@mailer'
namespace App\Newsletter;

use Location\To\Mailer;

class NewsletterManager {

    public function __construct(Mailer $mailer)
    {
        $this->mailer = $mailer;
    }
}

贡献

请参阅CONTRIBUTING以获取详细信息