flexsounds / slim-container-builder
从配置文件创建的一个轻量级容器构建工具
dev-master
2017-03-07 19:28 UTC
Requires
- hassankhan/config: ^0.10.0
Requires (Dev)
- phpunit/phpunit: ^4.8
- slim/slim: ^3.6
- symfony/yaml: ^3.1
This package is auto-updated.
Last update: 2024-09-10 06:14:16 UTC
README
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框架的默认服务,如settings
、request
、response
、router
等,也作为服务可用
基本示例
创建不带任何参数的服务非常简单。
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以获取详细信息