dacoto / laravel-env-set
A .env editor for Laravel
Installs: 4 779
Dependents: 1
Suggesters: 0
Security: 0
Stars: 2
Watchers: 0
Forks: 0
Open Issues: 0
Requires
- php: ^8.2
- illuminate/support: ^11.0
Requires (Dev)
- nunomaduro/larastan: ^2.6
- orchestra/testbench: ^9.0
- pestphp/pest: ^2.34
- pestphp/pest-plugin-laravel: ^2.3
README
Installation
composer require dacoto/laravel-env-set
Usage
Working with facade
Laravel Set Env has a facade with the name dacoto\EnvSet\Facades\EnvSet
. You can perform all operations through this facade.
Example:
<?php namespace Your\Namespace; // ... use dacoto\EnvSet\Facades\EnvSet; class YourClass { public function yourMethod() { EnvSet::doSomething(); } }
Using dependency injection
This package also supports dependency injection. You can easily inject an instance of the dacoto\EnvSet
class into your controller or other classes.
Example:
<?php namespace App\Http\Controllers; // ... use dacoto\EnvSet; class TestEnvSetController extends Controller { protected $editor; public function __construct(EnvSet $editor) { $this->editor = $editor; } public function doSomething() { $editor = $this->editor->doSomething(); } }
Reading file content
Reading raw content.
Method syntax:
/** * Get raw content of file * * @return string */ public function getContent();
Example:
$rawContent = EnvSet::getContent();
Reading content by lines.
Method syntax:
/** * Get all lines from file * * @return array */ public function getLines();
Example:
$lines = EnvSet::getLines();
Note: This will return an array. Each element in the array consists of the following items:
- Number of the line.
- Raw content of the line.
- Parsed content of the line, including: type of line (empty, comment, setter...), key name of setter, value of setter, comment of setter...
Reading content by keys
Method syntax:
/** * Get all or exists given keys in file content * * @param array $keys * * @return array */ public function getKeys($keys = []);
Example:
// Get all keys $keys = EnvSet::getKeys(); // Only get two given keys if exists $keys = EnvSet::getKeys(['APP_DEBUG', 'APP_URL']);
Note: This will return an array. Each element in the array consists of the following items:
- Number of the line.
- Key name of the setter.
- Value of the setter.
- Comment of the setter.
- If this key is used for the "export" command or not.
Determine if a key exists
Method syntax:
/** * Check, if a given key is exists in the file content * * @param string $keys * * @return bool */ public function keyExists($key);
Example:
$keyExists = EnvSet::keyExists('APP_URL');
Get value of a key
Method syntax:
/** * Return the value matching to a given key in the file content * * @param $key * * @throws \dacoto\EnvSet\Exceptions\KeyNotFoundException * * @return string */ public function getValue($key);
Example:
$value = EnvSet::getValue('APP_URL');
Note: To apply the changes to the file, you have to save it with the save method.
Writing content into a file
To edit file content, you have two jobs:
- First is writing content into the buffer
- Second is saving the buffer into the file
Add an empty line into buffer
Method syntax:
/** * Add empty line to buffer * * @return EnvSet */ public function addEmpty();
Example:
$file = EnvSet::addEmpty();
Add a comment line into buffer
Method syntax:
/** * Add comment line to buffer * * @param object * * @return EnvSet */ public function addComment($comment);
Example:
$file = EnvSet::addComment('This is a comment line');
Add or update a setter into buffer
Method syntax:
/** * Set one key to buffer * * @param string $key Key name of setter * @param string|null $value Value of setter * @param string|null $comment Comment of setter * @param boolean $export Leading key name by "export " * * @return EnvSet */ public function setKey($key, $value = null, $comment = null, $export = false);
Example:
// Set key ENV_KEY with empty value $file = EnvSet::setKey('ENV_KEY'); // Set key ENV_KEY with none empty value $file = EnvSet::setKey('ENV_KEY', 'anything-you-want'); // Set key ENV_KEY with a value and comment $file = EnvSet::setKey('ENV_KEY', 'anything-you-want', 'your-comment'); // Update key ENV_KEY with a new value and keep earlier comment $file = EnvSet::setKey('ENV_KEY', 'new-value-1'); // Update key ENV_KEY with a new value, keep earlier comment and use 'export ' before key name $file = EnvSet::setKey('ENV_KEY', 'new-value', null, true); // Update key ENV_KEY with a new value and clear comment $file = EnvSet::setKey('ENV_KEY', 'new-value-2', '', false);
Add or update multi setter into buffer
Method syntax:
/** * Set many keys to buffer * * @param array $data * * @return EnvSet */ public function setKeys($data);
Example:
$file = EnvSet::setKeys([ [ 'key' => 'ENV_KEY_1', 'value' => 'your-value-1', 'comment' => 'your-comment-1', 'export' => true ], [ 'key' => 'ENV_KEY_2', 'value' => 'your-value-2', 'export' => true ], [ 'key' => 'ENV_KEY_3', 'value' => 'your-value-3', ] ]);
Alternatively, you can also provide an associative array of keys and values:
$file = EnvSet::setKeys([ 'ENV_KEY_1' => 'your-value-1', 'ENV_KEY_2' => 'your-value-2', 'ENV_KEY_3' => 'your-value-3', ]);
Delete a setter line in buffer
Method syntax:
/** * Delete on key in buffer * * @param string $key * * @return EnvSet */ public function deleteKey($key);
Example:
$file = EnvSet::deleteKey('ENV_KEY');
Delete multi setter lines in buffer
Method syntax:
/** * Delete many keys in buffer * * @param array $keys * * @return EnvSet */ public function deleteKeys($keys = []);
Example:
// Delete two keys $file = EnvSet::deleteKeys(['ENV_KEY_1', 'ENV_KEY_2']);
Save buffer into file
Method syntax:
/** * Save buffer to file * * @return EnvSet */ public function save();
Example:
$file = EnvSet::save();