Console/Installers/Writers/EnvFileWriter.php
<?php namespace Modules\Core\Console\Installers\Writers;
use Dotenv;
use Illuminate\Filesystem\Filesystem;
class EnvFileWriter
{
/**
* @var Filesystem
*/
private $finder;
/**
* @var array
*/
protected $search = [
"DB_HOST=localhost",
"DB_DATABASE=homestead",
"DB_USERNAME=homestead",
"DB_PASSWORD=secret",
];
/**
* @var string
*/
protected $template = '.env.example';
/**
* @var string
*/
protected $file = '.env';
/**
* @param Filesystem $finder
*/
public function __construct(Filesystem $finder)
{
$this->finder = $finder;
}
/**
* @param $name
* @param $username
* @param $password
* @throws \Illuminate\Contracts\Filesystem\FileNotFoundException
*/
public function write($name, $username, $password, $host)
{
Dotenv::makeMutable();
$environmentFile = $this->finder->get($this->template);
$replace = [
"DB_HOST=$host",
"DB_DATABASE=$name",
"DB_USERNAME=$username",
"DB_PASSWORD=$password",
];
$newEnvironmentFile = str_replace($this->search, $replace, $environmentFile);
$this->finder->put($this->file, $newEnvironmentFile);
Dotenv::makeImmutable();
}
}