Php Symfony配置组件:阵列原型和UseAttributesKey
我在一个独立的PHP应用程序上使用,我希望在我的配置文件中有一个类似以下的结构:Php Symfony配置组件:阵列原型和UseAttributesKey,php,symfony,configuration,components,Php,Symfony,Configuration,Components,我在一个独立的PHP应用程序上使用,我希望在我的配置文件中有一个类似以下的结构: sites: site1: ftp: server: myserver name: name ...: ... database: server: myserver name: .... 另外,我需要数组中“site1”节点的useAttributesKey()方法(“sites”节点可以处理多个站点,名称为key) 我试着用这种方式
sites:
site1:
ftp:
server: myserver
name: name
...: ...
database:
server: myserver
name: ....
另外,我需要数组中“site1”节点的useAttributesKey()方法(“sites”节点可以处理多个站点,名称为key)
我试着用这种方式设置它,但最终我得到了一个“不在nodededefinition中的children方法”。如何正确设置
$rootNode
->children()
->scalarNode(self::REMANENCE_NODE[self::NODE_NAME])
->defaultValue(self::REMANENCE_NODE[self::NODE_DEFAULT_VALUE])
->info('Contains the backup folders max value to keep on defined storages')
->end()
->arrayNode(self::SITES)
->requiresAtLeastOneElement()
->useAttributeAsKey('name')
->prototype('array')
->children()
->arrayNode(self::DATABASE)
->end()
->arrayNode(self::FILES)
->end()
->end()
->end()
谢谢你的回复,
尼古拉斯我终于找到了好的配置:
$rootNode
->children()
->scalarNode(self::REMANENCE_NODE[self::NODE_NAME])
->defaultValue(self::REMANENCE_NODE[self::NODE_DEFAULT_VALUE])
->info('Contains the backup folders max value to keep on defined storages')
->end()
->arrayNode(self::SITES)
->requiresAtLeastOneElement()
->prototype('array')
->children()
->arrayNode(self::DATABASE)
->children()
->scalarNode(self::DATABASE_SERVER[self::NODE_NAME])
->defaultValue(self::DATABASE_SERVER[self::NODE_DEFAULT_VALUE])
->info('Contains the database server IP or name')
->end()
configuration:
remanence: 5
sites:
site_1: # this is the attribute as key
database:
server: localhost
... : ...
上述操作适用于以下配置:
$rootNode
->children()
->scalarNode(self::REMANENCE_NODE[self::NODE_NAME])
->defaultValue(self::REMANENCE_NODE[self::NODE_DEFAULT_VALUE])
->info('Contains the backup folders max value to keep on defined storages')
->end()
->arrayNode(self::SITES)
->requiresAtLeastOneElement()
->prototype('array')
->children()
->arrayNode(self::DATABASE)
->children()
->scalarNode(self::DATABASE_SERVER[self::NODE_NAME])
->defaultValue(self::DATABASE_SERVER[self::NODE_DEFAULT_VALUE])
->info('Contains the database server IP or name')
->end()
configuration:
remanence: 5
sites:
site_1: # this is the attribute as key
database:
server: localhost
... : ...
需要注意的两件事:
- 在本例中,prototype('array')似乎将键作为属性处理
- 我使用PHPStorm,它使用PHPDoc提供信息,目前我有一个underlighted children()方法(在prototype one之后),指示我在原始问题中提到的警告。稍后我会再深入挖掘,但这里似乎乱七八糟