cocur / pli
Pli 是一个库和一套约定,用于使用 Symfony Console、DependencyInjection 和 Config 组件启动控制台应用程序。
v0.1.2
2015-06-05 15:28 UTC
Requires
- symfony/config: ~2.5
- symfony/console: ~2.5
- symfony/dependency-injection: ~2.5
- symfony/finder: ~2.5
- symfony/yaml: ~2.5
Requires (Dev)
- mikey179/vfsstream: ~1.4
- mockery/mockery: ~0.9
- phpunit/phpunit: ~4.3
README
Pli 是一个库和一套约定,用于使用 Symfony Console、DependencyInjection 和 Config 组件启动控制台应用程序。
Symfony 组件非常强大,但为了这种灵活性,需要编写大量的启动代码来设置组件。特别是当集成 Console、DependencyInjection 和 Config 时,开发者必须从文档中复制和修改大量代码。 Pli 通过一些假设(例如 Yaml 格式的配置文件)来减少启动简单控制台应用程序所需的代码量。
由欧洲维也纳的 Florian Eckerstorfer 开发。
安装
您可以使用 Composer 安装 Pli。
$ composer require cocur/pli
用法
使用 Pli 启动控制台应用程序是一个三步过程。
- 加载配置:加载并解析一个或多个 Yaml 配置文件。
- 构建容器:创建一个容器并调用 扩展 来初始化它
- 创建应用程序:创建一个应用程序并将所有标记为
command
的命令添加到其中。如果命令实现了ContainerAwareInterface
,则将容器设置为命令。
首先,我们需要一个初始化 Pli
的主文件。您还需要一个配置和一个扩展类,Pli 在这方面与 Symfony 非常相似。然而,Pli 版本的扩展功能要少得多。
// console.php use Cocur\Pli\Pli; $pli = new Pli(__DIR__.'/config'); $config = $pli->loadConfiguration(new AcmeConfiguration(), ['config.yml']); $container = $pli->buildContainer(new AcmeExtension(), $config); $application = $pli->getApplication($container); $application->run();
// src/AcmeConfiguration.php <?php use Symfony\Component\Config\Definition\ConfigurationInterface; use Symfony\Component\Config\Definition\Builder\TreeBuilder; class BranConfiguration implements ConfigurationInterface { public function getConfigTreeBuilder() { $treeBuilder = new TreeBuilder(); $rootNode = $treeBuilder->root('acme'); return $treeBuilder; } }
Pli 还需要一个用于构建容器的扩展。您可以为参数设置、动态创建服务定义等。如果要将服务配置存储在 Yaml 文件中,可以使用 configDirectories
属性来检索配置目录的路径。
// src/AcmeExtension.php <?php use Cocur\Pli\Container\ExtensionInterface; use Symfony\Component\Config\FileLocator; use Symfony\Component\DependencyInjection\ContainerBuilder; use Symfony\Component\DependencyInjection\Loader\YamlFileLoader; class BranExtension implements ExtensionInterface { private $configDirectories; public function buildContainer(ContainerBuilder $container, array $config = []) { $loader = new YamlFileLoader($container, new FileLocator($this->configDirectories)); $loader->load('services.yml'); } public function setConfigDirectories(array $configDirectories) { $this->configDirectories = $configDirectories; } }
变更日志
版本 0.1.2(2015 年 6 月 5 日)
- 向容器添加参数和编译器传递
版本 0.1.1(2015 年 6 月 5 日)
- 支持多个配置目录
版本 0.1(2015 年 5 月 18 日)
- 初始发布
许可
MIT 许可证适用于 cocur/pli。有关完整的版权和许可信息,请参阅与源代码一起分发的 LICENSE
文件。