Php Silverstripe 3配置条件
我正在尝试YAML配置API,可以找到这些文档。我的用例: 我有一个具有2个“config”属性的类Php Silverstripe 3配置条件,php,config,silverstripe,Php,Config,Silverstripe,我正在尝试YAML配置API,可以找到这些文档。我的用例: 我有一个具有2个“config”属性的类 class Foo extends Object { private static $host = null; private static $port = null; } 现在,我需要每个环境使用不同的主机名,但使用相同的端口。 假设在dev环境中,$host应该是1.1.1.1,而在实时环境中,ist必须是2.2.2.2。端口应设置为10000 所有其他部分应适用于所有环境类型 c
class Foo extends Object {
private static $host = null;
private static $port = null;
}
现在,我需要每个环境使用不同的主机名,但使用相同的端口。
假设在dev环境中,$host应该是1.1.1.1,而在实时环境中,ist必须是2.2.2.2。端口应设置为10000
所有其他部分应适用于所有环境类型
config.yml
(不工作):
在本例中,“Foo”的所有属性都为null,只设置了“Bar::test”
我做错了什么?我认为YAML文件的结构,实际的配置指令被误解为YAML文档“头”,基于环境的规则被解释为配置。你试过这样的东西吗
---
Name: myexcitingconfig
---
# Global config here
Bar:
test: 'hooray'
---
Only:
environment: 'dev'
---
Foo:
host: '1.1.1.1'
port: 10000
---
Only:
environment: 'live'
---
Foo:
host: '2.2.2.2'
port: 10000
---
另外,在使用命名空间类时,应该在YAML文件中写入完全限定的类名。因此,如果Foo
位于命名空间My\Awesome\Module
中,您的配置条目将是:
My\Awesome\Module\Foo:
host: '2.2.2.2'
port: 10000
我认为YAML文件的结构方式,实际的配置指令被误解为YAML文档“头”,基于环境的规则被解释为配置。你试过这样的东西吗
---
Name: myexcitingconfig
---
# Global config here
Bar:
test: 'hooray'
---
Only:
environment: 'dev'
---
Foo:
host: '1.1.1.1'
port: 10000
---
Only:
environment: 'live'
---
Foo:
host: '2.2.2.2'
port: 10000
---
另外,在使用命名空间类时,应该在YAML文件中写入完全限定的类名。因此,如果Foo
位于命名空间My\Awesome\Module
中,您的配置条目将是:
My\Awesome\Module\Foo:
host: '2.2.2.2'
port: 10000
对!!似乎在“only”条件之后不会解析任何配置设置。 以下操作有效,但不是最后一个“test2”属性:
---
Name: myexcitingconfig
---
Bar:
test: 'hooray'
---
Only:
environment: 'dev'
---
Foo:
host: '1.1.1.1'
port: 10000
---
Only:
environment: 'live'
---
Foo:
host: '2.2.2.2'
port: 10000
---
Bar:
test2: 'hooray, also'
对!!似乎在“only”条件之后不会解析任何配置设置。 以下操作有效,但不是最后一个“test2”属性:
---
Name: myexcitingconfig
---
Bar:
test: 'hooray'
---
Only:
environment: 'dev'
---
Foo:
host: '1.1.1.1'
port: 10000
---
Only:
environment: 'live'
---
Foo:
host: '2.2.2.2'
port: 10000
---
Bar:
test2: 'hooray, also'
你的班级有名字空间吗?@bummzack:不,没有。你的班级有名字空间吗?@bummzack:不,没有。是的!似乎在“only”条件之后不会解析任何配置设置。下面的工作正常,但不是最后一个“test2”属性:`---Name:myexcitingconfig---Bar:test:'hooray'---Only:environment:'dev'---Foo:host:'1.1.1'端口:10000---Only:environment:'live'---Foo:host:'2.2.2'端口:10000---Bar:test2:'hoorary,也是'`Yes!似乎在“only”条件之后不会解析任何配置设置。以下内容可以工作,但不是最后一个“test2”属性:`---Name:myexcitingconfig---Bar:test:'hooray'---Only:environment:'dev'---Foo:host:'1.1.1'端口:10000---Only:environment:'live'---Foo:host:'2.2.2'端口:10000---Bar:test2:'hoorary,`我认为您的评估是错误的。配置设置应该在“only”条件后进行解析,但不能在一个yaml文件中两次“重新配置”同一对象。如果顶部有
Bar
,底部有Baz
,我很有信心它也会出现Baz
,我认为你的评估是错误的。配置设置应该在“only”条件后进行解析,但不能在一个yaml文件中两次“重新配置”同一对象。如果顶部有Bar
,底部有Baz
,我很有信心它也会出现Baz
…