首页 / PHP / php – Symfony配置默认值
php – Symfony配置默认值
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了php – Symfony配置默认值,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2239字,纯文字阅读大概需要4分钟。
内容图文
![php – Symfony配置默认值](/upload/InfoBanner/zyjiaocheng/788/69dcf759c3844a93a5f912ca9e9c0379.jpg)
我相信我的配置是正确的,但我想要我的redis端口和方案配置选项的默认值,但它们是以空值形式出现的?
任何人都可以看到问题是什么?
这是我的配置.
/**
* {@inheritdoc}
*/
public function getConfigTreeBuilder()
{
$treeBuilder = new TreeBuilder();
$rootNode = $treeBuilder->root('company_name');
$rootNode
->children()
->arrayNode('cache')
->children()
->arrayNode('redis')
->addDefaultsIfNotSet()
->treatNullLike([
'scheme' => 'tcp',
'port' => 6379,
])
->children()
->scalarNode('scheme')
->defaultValue('tcp')
->end()
->scalarNode('host')
->isRequired()
->cannotBeEmpty()
->end()
->integerNode('port')
->defaultValue(6379)
->end()
->end()
->end()
->end()
->end()
->end();
return $treeBuilder;
}
这是我的parameters.yml文件
parameters:
company_name:
cache:
redis:
host: dev-sessionstore.companyname.com
schema: ~
port: ~
控制台输出:
$php bin/console config:dump-reference CompanyNameCacheBundle
# Default configuration for "CompanyNameCacheBundle"
company_name:
cache:
redis:
namespace: apps
scheme: tcp
host: ~ # Required
port: 6379
apcu:
namespace: phpcache
我希望方案和端口使用默认值,但是什么导致它们为空?
解决方法:
我知道这是一个老问题,但我在谷歌搜索一个不同的问题时偶然发现它,并发现它没有得到答复.
问题是您只是指定应该如何处理整个redis数组的null,而不是方案和端口值.您指定了它们的默认值,但由于您将这些单独的键设置为null,因此您需要指定应为每个键处理null的方式:
/**
* {@inheritdoc}
*/
public function getConfigTreeBuilder()
{
// Using an array so the values only need to be changed in one place
$redisDefaults = [
'scheme' => 'tcp',
'port' => 6379,
];
$treeBuilder = new TreeBuilder();
$rootNode = $treeBuilder->root('company_name');
$rootNode
->children()
->arrayNode('cache')
->children()
->arrayNode('redis')
->addDefaultsIfNotSet()
->treatNullLike($redisDefaults)
->children()
->scalarNode('scheme')
->defaultValue($redisDefaults['scheme'])
->treatNullLike($redisDefaults['scheme'])
// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
->end()
->scalarNode('host')
->isRequired()
->cannotBeEmpty()
->end()
->integerNode('port')
->defaultValue($redisDefaults['port'])
->treatNullLike($redisDefaults['port'])
// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
->end()
->end()
->end()
->end()
->end()
->end();
return $treeBuilder;
}
您的参数文件中还有一个拼写错误,它应该是scheme,而不是schema
内容总结
以上是互联网集市为您收集整理的php – Symfony配置默认值全部内容,希望文章能够帮你解决php – Symfony配置默认值所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。