Symfony 4.0中如何在PHP配置文件里定义参数?
在Symfony 4.0的PHP配置文件中定义参数
没错,你猜的方向完全正确!在Symfony的PHP配置文件里,就是通过$container->setParameter()来定义参数,之后就能用$container->getParameter()正常访问这些参数了。
具体实现示例
你的foobar.php文件需要写成返回闭包的形式,这个闭包会接收ContainerBuilder实例作为参数,你可以在里面调用它的setParameter方法来定义参数:
<?php // config/foobar.php use Symfony\Component\DependencyInjection\ContainerBuilder; return function (ContainerBuilder $container) { // 单个参数设置 $container->setParameter('app.foo', 'bar'); // 批量设置多个参数更高效 $parameters = [ 'app.max_upload_size' => 1024 * 1024 * 5, // 5MB 'app.maintenance_mode' => false, 'app.support_email' => 'support@example.com', ]; foreach ($parameters as $key => $value) { $container->setParameter($key, $value); } };
进阶用法:引用已有参数
如果需要基于已有的参数(比如Symfony自带的kernel.project_dir)来定义新参数,也可以在闭包里直接调用$container->getParameter()获取:
$container->setParameter('app.upload_dir', $container->getParameter('kernel.project_dir') . '/public/uploads' );
验证使用
设置完成后,不管是在控制器里还是服务类中,你都可以像使用YAML定义的参数一样,通过$container->getParameter('app.foo')来获取对应的值,完全兼容原有逻辑。
内容的提问来源于stack exchange,提问作者Chris
相关产品推荐
相关产品推荐

