enrise/soy-symfony-build-parameters-task

此包已被废弃且不再维护。未建议替代包。

Soy Symfony Build Parameters Task

0.2.0 2016-02-01 10:32 UTC

This package is not auto-updated.

Last update: 2022-10-15 08:35:16 UTC


README

这是一个已不再使用或维护的旧仓库。我们建议不再使用此仓库。

原始的README可以在下面找到

Soy Symfony Build Parameters Task

安装

此任务作为以下包可用:https://packagist.org.cn/packages/enrise/soy-symfony-build-parameters-task

你可以运行:composer require enrise/soy-symfony-build-parameters-task

安装后,你可以按照以下说明进行操作,如果你不熟悉soy,请先查看:https://github.com/soy-php/soy

目标和用法

此任务旨在生成symfony配置的parameters.yml,为此使用环境策略。

默认策略执行以下操作:

  1. 读取全局环境文件:files/env/environment.global.yml
  2. 读取环境文件:files/env/environment.dev.yml
  3. 读取模板文件:app/config/parameters.dist.yml
  4. 生成最终的参数文件:app/config/parameters.yml

你只需创建简单的配方即可无需交互执行,例如

<?php

use Enrise\Soy\SymfonyBuildParameters\ParametersTask;
use Enrise\Soy\SymfonyBuildParameters\PrepareEnvironmentTask;
use Enrise\Soy\SymfonyBuildParameters\PrepareSymfonyEnvironmentTask;

$recipe = new \Soy\Recipe();

$recipe->component('symfony-parameters', function (PrepareSymfonyEnvironmentTask $environmentTask) {
    $environmentTask
        ->run();
})
    ->cli([ParametersTask::class, 'prepareCli'])
    ->cli([PrepareEnvironmentTask::class, 'prepareCli'])
    ->cli([PrepareSymfonyEnvironmentTask::class, 'prepareCli'])
;

然后运行

# ./vendor/bin/soy symfony-parameters

结果

Running Enrise\Soy\SymfonyBuildParameters\PrepareSymfonyEnvironmentTask
Running Enrise\Soy\SymfonyBuildParameters\PrepareEnvironmentTask
	Template file app/config/parameters.yml.dist
	Destination file app/config/parameters.yml
	Destination file will be replaced
Running Enrise\Soy\SymfonyBuildParameters\ParametersTask
	Read environment file files/environment/environment.local.yml
	Read global environment file files/environment/environment.global.yml
app/config/parameters.yml file generated successfully

基本的配方可能看起来像这样

<?php

use Enrise\Soy\SymfonyBuildParameters\ParametersTask;
use Enrise\Soy\SymfonyBuildParameters\PrepareEnvironmentTask;
use Enrise\Soy\SymfonyBuildParameters\PrepareSymfonyEnvironmentTask;

$recipe = new \Soy\Recipe();

$recipe->component('default', function (PrepareSymfonyEnvironmentTask $environmentTask) {
    $environmentTask
        ->run();
})
    ->cli([ParametersTask::class, 'prepareCli'])
    ->cli([PrepareEnvironmentTask::class, 'prepareCli'])
    ->cli([PrepareSymfonyEnvironmentTask::class, 'prepareCli'])
;

这种方式将满足所有任务的依赖关系,并完全控制。帮助命令将如下所示

Optional Arguments:
	component (default: default)
		The component to run
	--help
		Show usage
	--version
		Show version
	--no-diagnostics
		Disable diagnostics
	--recipe recipe (default: recipe.php)
		The recipe file to use
	--env-path env-path (default: files/environment)
		The directory which contains the env files
	--env env (default: dev)
		The current environment name. I.E.: dev, test, prod
	--dest-file dest-file (default: app/config/parameters.yml)
		The destination file
	--src-file src-file (default: app/config/parameters.yml.dist)
		The source file used as template for generating the dist file

参数优先级(从低到高)

如果你没有提供选项,将使用命令的默认选项

  • --env-path env-path(默认:files/environment
  • --env env(默认:dev
  • --dest-file dest-file(默认:app/config/parameters.yml
  • --src-file src-file(默认:app/config/parameters.yml.dist

Symfony环境变量

# SYMFONY_ENV=test ./vendor/bin/soy      
  Running Enrise\Soy\SymfonyBuildParameters\PrepareSymfonyEnvironmentTask
    Symfony Environment detected as "test"

CLI参数

# SYMFONY_ENV=test ./vendor/bin/soy --env=local
  Running Enrise\Soy\SymfonyBuildParameters\PrepareSymfonyEnvironmentTask
    Symfony Environment detected as "local"

在配方中强制执行

配方

$recipe->component(
    'symfony-prod',
    function (PrepareSymfonyEnvironmentTask $sfEnvironmentTask, ParametersTask $parametersTask) {
        $parametersTask->setEnv('prod');
        $sfEnvironmentTask
            ->run();
    }
)
    ->cli([ParametersTask::class, 'prepareCli'])
    ->cli([PrepareEnvironmentTask::class, 'prepareCli'])
    ->cli([PrepareSymfonyEnvironmentTask::class, 'prepareCli'])
;
# SYMFONY_ENV=test ./vendor/bin/soy --env=local
  Running Enrise\Soy\SymfonyBuildParameters\PrepareSymfonyEnvironmentTask
    Symfony Environment detected as "prod"