适用于不同环境的CodeIgniter 4配置文件

7kqas0il  于 7个月前  发布在  其他
关注(0)|答案(2)|浏览(98)

我在CodeIgniter 4中建立了一个原型应用程序,当涉及到为不同的环境设置不同的配置时,我完全感到困惑。(或它们的版本),并保持框架的默认配置文件不变,但我不知道这是否适合CI 4。我主要担心的是进一步的框架更新是否会改变默认的配置文件。
我知道如何使用关于DB和环境设置的.env文件,但我想进一步设置,即不同的区域设置,使用不同的日志设置Monolog,设置不同的过滤器等,但我不熟悉CI 4的标准程序。
我真的很感激一些指导与此,提前感谢!
我试过在app/Config中创建环境文件夹来适应命名空间,但CI 4不会根据环境选择不同的文件。

app/
    ├── Config/
    │   ├── development/
    │   │   ├── app.php
    │   │   ├── database.php
    │   │   ├── filters.php
    │   │   └── ...
    │   ├── production/
    │   │   ├── app.php
    │   │   ├── database.php
    │   │   ├── filters.php
    │   │   └── ...
    │   ├── testing/
    │   │   ├── app.php
    │   │   ├── database.php
    │   │   ├── filters.php
    │   │   └── ...
    │   ├── app.php
    │   ├── database.php
    │   ├── filters.php
    │   └── ...

字符串

up9lanfz

up9lanfz1#

告诉你,您通常需要手动修改/编辑框架的核心配置属性。所有缩放器和数组结构化配置属性都可以使用 * .env * 文件中的环境变量进行更改/修改。这个特殊的 * .env * 文件比硬文件具有更高的优先级。编码的值在各自的配置类。这消除了您对由于框架更新而丢失设置的担忧。
此外,您可以为核心框架设置范围之外的其他设置创建自定义配置类。这些自定义配置类的公共属性也可以使用相应环境的 * .env * 文件进行更改/覆盖。

摘要:

拥有交替的.env文件,其设置将覆盖新自定义和现有核心配置类的公共标量和数组结构属性。😀

参考

配置类和环境变量
如果具有命名空间的变量的前缀与配置类的命名空间完全匹配,则设置的尾随部分(点后)被视为配置属性。如果它与现有配置属性匹配,则环境变量的值将替换配置文件中的相应值。如果不匹配,则配置类属性保持不变。在这种用法中,前缀必须是类的完整(区分大小写)命名空间。

Config\App.forceGlobalSecureRequests = true
Config\App.CSPEnabled = true

字符串

hpcdzsge

hpcdzsge2#

关于过滤器,我已经走到了死胡同,我发现如果不编辑框架文件app/Config/Filters.php,就无法使用过滤器
由于.env文件不能为config类中的现有数组创建新数组或键,但可以编辑它们的值,因此我仍然需要从filters.php编辑$aliases,$globals等数组
下面是我创建的一个别名为“log”的简单过滤器的示例:

public array $aliases = 
[
    'csrf'          => CSRF::class,
    'toolbar'       => DebugToolbar::class,
    'honeypot'      => Honeypot::class,
    'invalidchars'  => InvalidChars::class,
    'secureheaders' => SecureHeaders::class,
    'log' => LogFilter::class,
];

public array $globals = 
[
    'before' => [
        // 'honeypot',
        // 'csrf',
        // 'invalidchars',
        'log'
    ],
    'after' => [
        'toolbar',
        // 'honeypot',
        // 'secureheaders',
    ],
];

字符串
如果不编辑Filters.php文件,我就找不到解决方法,这可行吗?
先谢了。

相关问题