Skip to content

cyberinferno/yii2-phpdotenv

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Phpdotenv extension for Yii 2

This is a Yii2 extension for vulcas/phpdotenv

Installation

The preferred way to install this extension is through composer.

Either run

php composer.phar require cyberinferno/yii2-phpdotenv

or add

"cyberinferno/yii2-phpdotenv": "~2.0.0"

to the require section of your composer.json.

Configuration

Usage:

return [
    //....
    'bootstrap' => [
        [
            'class' => 'cyberinferno\yii\phpdotenv\Loader',
            'path' => '@vendor/../', // Directory of the .env file 
            'file' => '.env', // Optional parameter if custom environment variable file
            'overload' => false, // Optional parameter whether to overload already existing environment variables. Defaults to false
        ],
    ]
];

To use components which will access environment variables extend Loader class like this:

<?php

namespace common\components;

use cyberinferno\yii\phpdotenv\Loader;
use yii\helpers\ArrayHelper;

class PhpdotenvLoader extends Loader
{
    public function bootstrap($app)
    {
        parent::bootstrap($app);
        $app->setComponents(ArrayHelper::merge($app->getComponents(),
            [
                'db' => [
                    'class' => 'yii\db\Connection',
                    'dsn' => getenv('DB_DSN'),
                    'username' => getenv('DB_USERNAME'),
                    'password' => getenv('DB_PASSWORD'),
                    'charset' => 'utf8',
                ],
            ]
        ));
    }
}

Bootstrap this class in your config like this:

return [
    //....
    'bootstrap' => [
        [
            'class' => 'common\components\PhpdotenvLoader'
        ],
    ]
];

This extension was tested to be working well with Yii2 Advanced Template
but can be used in any Yii2 application by sending proper .env file path while bootstrapping the extension.