有没有办法将.env变量传递给我的app.json文件?

时间:2019-02-05 15:24:07

标签: php heroku environment-variables config

我已经将应用程序部署到了heroku,但是我想将我的.json文件(用于存储数据库信息的文件)保存到heroku的网络服务器上,而不必将文件推送到github(忽略文件)。我得到了使用.env文件的建议。是否可以将信息从.env文件传递到.json文件,还是我需要以某种方式更改代码?

我已经尝试登录heroku在服务器上添加文件,但是它不起作用,因为当应用程序重启时,它会重置。

app.json

{
    "db": {
        "dsn": "mysql:host=adress;dbname=database;charset=utf8",
        "user": "user",
        "password": "pass" 
    }
}

Connection.php

<?php

namespace TwitterClone\Core;

use \PDO;
use TwitterClone\Core\Config;
use TwitterClone\Utils\Singleton;

class Connection extends Singleton
{
    public $handler;
    protected function __construct()
    {
        try {
            $config = Config::getInstance()->get('db');
            $this->handler = new PDO(
                $config['dsn'],
                $config['user'],
                $config['password']
            );
            $this->handler->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);
        } catch (PDOException $e) {
            echo $e->getMessage();
        }
    }
}

Config.php

<?php

namespace TwitterClone\Core;

use TwitterClone\Utils\Singleton;
use TwitterClone\Exceptions\NotFoundException;

/**
 * Singleton
 */
class Config extends Singleton
{
    private $data;

    protected function __construct()
    {
        $json = file_get_contents(__DIR__ . '/../../config/app.json');
        $this->data = json_decode($json, true);
    }

    public function get($key)
    {
        if (!isset($this->data[$key])) {
            throw new NotFoundException("Key $key not in config.");
        }
        return $this->data[$key];
    }
}

我想将文件推送到heroku的服务器上,而不是github上。或在不显示敏感信息的情况下将信息获取到app.json文件的方法。

0 个答案:

没有答案