15赞
856
当前位置:  开发笔记 > 编程语言 > 正文

symfony4在服务中使用.env配置变量

如何解决《symfony4在服务中使用.env配置变量》经验,为你挑选了1个好方法。

我正在使用一个不是特别为symfony(TNTsearch)制作的包,并且已经将我想要使用的所有函数放在我调用的服务中TNTsearchHelper.php.此服务需要一些变量,包括可以在.env文件中找到的变量.我目前在我的班级中定义和构建这些:

class TntSearchHelper
{
    public function __construct(EntityManagerInterface $em)
    {
        $this->em = $em;

        $cOnfig= [
            'driver'    => 'mysql',
            'host'      => 'localhost',
            'database'  => 'databasename',
            'username'  => 'user',
            'password'  => 'pw',
            'storage'   => 'my/path/to/file',
            'charset'   => 'utf8',
            'collation' => 'utf8_general_ci',
        ];

        $this->cOnfig= $config;
    }

我真正想要的是简单地使用.env文件中设置的数据库变量.有没有办法做到这一点?此服务未注册,services.yaml因为这不是autowire: true选项所必需的,所以我没有任何配置选项/文件用于我的服务,config并想知道我是否可以保持这种方式.



1> Nikita Leshc..:

是.这是可能的.如果要使用env变量进行配置,则有两个选项:

1.使用getenv:

$cOnfig= [
    'driver'    => 'mysql',
    'host'      => getenv('MYSQL_HOST'),
    'database'  => getenv('MYSQL_DB'),
    'username'  => getenv('MYSQL_LOGIN'),
    'password'  => getenv('MYSQL_PASSWORD'),
    'storage'   => 'my/path/to/file',
    'charset'   => 'utf8',
    'collation' => 'utf8_general_ci',
];

2.将您的服务配置为services.yaml:

services:
  App\TntSearchHelper:
    arguments:
      - '%env(MYSQL_HOST)%'
      - '%env(MYSQL_DB)%'
      - '%env(MYSQL_LOGIN)%'
      - '%env(MYSQL_PASSWORD)%'

并将您的__construct功能更改为:

public function __construct(string $host, string $db, string $login, string $password, EntityManagerInterface $em) 
{
    $this->em = $em;
    $cOnfig= [
        'driver'    => 'mysql',
        'host'      => $host,
        'database'  => $db,
        'username'  => $login,
        'password'  => $password,
        'storage'   => 'my/path/to/file',
        'charset'   => 'utf8',
        'collation' => 'utf8_general_ci',
    ];
    $this->cOnfig= $config;
}

还要确保设置了所有这些env变量,因为默认情况下文件中只有DATABASE_URL变量.env


推荐阅读
author-avatar
平凡的如果爱166
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有