Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/254.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/azure/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Silverstripe 3配置条件_Php_Config_Silverstripe - Fatal编程技术网

Php Silverstripe 3配置条件

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

我正在尝试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

所有其他部分应适用于所有环境类型

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