wemakecustom/symfony-app-loader

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

Composer 脚本处理您忽略的 app_loader.ini 文件

v2.0 2016-03-10 21:38 UTC

This package is not auto-updated.

Last update: 2022-07-18 08:52:52 UTC


README

此包为 Symfony 提供统一的入口控制器,将所有选项合并为一个 AppLoader。所有选项都可以使用自定义入口控制器或扩展 AppLoader 来覆盖。

此工具使用一个脚本,在运行 composer install 或 update 时会要求您输入参数,这与 incenteev/composer-parameter-handler 非常相似。

安装

在您的根 composer.json 文件中添加以下内容

{
    "require": {
        "wemakecustom/symfony-app-loader": "~1.0@dev"
    },
    "scripts": {
        "post-install-cmd": [
            "WMC\\AppLoader\\ScriptHandler::buildParameters",
        ],
        "post-update-cmd": [
            "WMC\\AppLoader\\ScriptHandler::buildParameters",
        ]
    }
}

web/app.php 替换为该包中的版本。有关更多详细信息,请参阅 使用入口控制器覆盖选项 部分。

app/console 替换为该包中的版本。

在 .gitignore 中忽略您的 ini 文件

/app/config/app_loader.ini

Composer 脚本配置

不同的文件和 dist 文件

Composer 脚本将创建或更新 app/config/app_loader.ini,以匹配 dist 文件 app/config/app_loader.ini.dist 的结构,通过询问您缺失的参数。如果您的 Symfony 安装中没有可用的 app/config/app_loader.ini.dist,它将使用默认版本。

默认情况下,假定 dist 文件位于与参数文件相同的位置,文件名后缀为 .dist。这可以在配置中进行更改。

{
    "extra": {
        "wmc-app-loader": {
            "file": "app/config/app_loader.ini",
            "dist-file": "some/other/folder/to/other/parameters/file/app_loader.ini.dist"
        }
    }
}

保留过时参数

脚本处理器将交互式地询问您参数文件中缺失的参数,使用 dist 文件的值作为默认值。所有提示的值都作为内联 INI 解析,以便您轻松地定义 truefalse 或数字。如果 composer 以非交互式模式运行,则使用 dist 文件的值用于缺失的参数。

警告:此脚本会从 app_loader.ini 中删除不在 app_loader.ini.dist 中的过时参数。如果您需要保留过时参数,可以在配置中使用 keep-outdated 参数。

{
    "extra": {
        "wmc-app-loader": {
            "keep-outdated": true,
        }
    }
}

使用环境变量设置参数

对于您的生产环境,在部署时可能无法使用交互式提示。在这种情况下,您可以使用环境变量来提供参数。这是通过提供环境变量和它们应填充的参数之间的映射来实现的。

{
    "extra": {
        "wmc-app-loader": {
            "env-map": {
                "my_first_param": "MY_FIRST_PARAM",
                "my_second_param": "MY_SECOND_PARAM"
            }
        }
    }
}

如果设置了环境变量,其值将始终替换现有参数文件中设置的值。

由于环境变量只能是字符串,因此它们也被解析为内联 INI 值,以便轻松指定 falsetrue 或数字。

警告:此参数处理器将覆盖您的 app_loader.ini 文件中的任何注释或空格,因此请谨慎处理。因此,如果您想为参数文件提供格式和注释,您应该在 dist 版本中完成此操作。

自定义行为

使用前端控制器覆盖选项

标准控制器位于 web/app*.php。建议在开发配置中复制所有文件。虽然在生产环境中并非必需,但通常只保留 web/app.php

如示例所示,在实例化 AppLoader 之后,但在 $app_loader->run(); 之前,您可以覆盖任何选项。

可用的选项有

  • environment:(dev|test|prod)
  • debug:(true|false) 当环境 == dev 时自动猜测
  • http_cache:(true|false) 是否使用 Symfony HTTP 反向代理
  • localhost_only:(true|false) 在开发模式下是否限制请求到 localhost
  • umask_fix:(true|false) 是否将 umask 更改为 0000
  • apc_cache_id:(false|string) 如果是有效的字符串,则用作缓存中的 APC id

通过扩展 AppLoader 覆盖行为

提供的 AppLoader 可以完全覆盖。您可以扩展它,并修改您的前端控制器以使用自己的实现。请参阅 sample/AppLoader 以获取示例。