cleaniquecoders / php-env-key-manager
A framework-agnostic PHP package for easy .env file key management. Seamlessly update, add, or modify environment variables across projects with minimal configuration.
Fund package maintenance!
CleaniqueCoders
Requires
- php: ^8.1
Requires (Dev)
- laravel/pint: ^1.0
- pestphp/pest: ^2.20
- spatie/ray: ^1.28
This package is auto-updated.
Last update: 2024-11-11 16:56:46 UTC
README
A framework-agnostic PHP package for easy .env file key management. Seamlessly update, add, or modify environment variables across projects with minimal configuration.
Installation
You can install the package via composer:
composer require cleaniquecoders/php-env-key-manager
Usage
Basic Usage
Following are the basic usage examples for the package:
use CleaniqueCoders\PhpEnvKeyManager\EnvKeyManager; // Path to your .env file $envFilePath = __DIR__ . '/.env'; $envManager = new EnvKeyManager($envFilePath); // Set a key $envManager->setKey('APP_DEBUG', 'true'); // Disable a key $envManager->disableKey('APP_DEBUG'); // Enable a key $envManager->enableKey('APP_DEBUG');
Framework-Specific Examples
Laravel
To use EnvKeyManager
in a Laravel application, register it as a singleton in the AppServiceProvider
to allow easy access across your application.
Laravel Usage
-
Register as a Singleton
In
App\Providers\AppServiceProvider
:use CleaniqueCoders\PhpEnvKeyManager\EnvKeyManager; public function register() { $this->app->singleton(EnvKeyManager::class, function ($app) { return new EnvKeyManager($app->environmentFilePath()); }); }
-
Usage in a Command
Create a Laravel Artisan command to set, disable, or enable environment keys:
<?php namespace App\Console\Commands; use CleaniqueCoders\PhpEnvKeyManager\EnvKeyManager; use Illuminate\Console\Command; class ManageEnvKeyCommand extends Command { protected $signature = 'env:manage-key {action} {key} {value?}'; protected $description = 'Manage an environment key'; protected $envManager; public function __construct(EnvKeyManager $envManager) { parent::__construct(); $this->envManager = $envManager; } public function handle() { $action = $this->argument('action'); $key = $this->argument('key'); $value = $this->argument('value'); switch ($action) { case 'set': $this->envManager->setKey($key, $value); $this->info("Key {$key} set to {$value}."); break; case 'disable': $this->envManager->disableKey($key); $this->info("Key {$key} has been disabled."); break; case 'enable': $this->envManager->enableKey($key); $this->info("Key {$key} has been enabled."); break; default: $this->error("Invalid action. Use 'set', 'disable', or 'enable'."); } } }
Symfony
To use EnvKeyManager
in Symfony, initialize it with the .env
path, and use it in Symfony commands or services.
Symfony Usage
-
Initialize
EnvKeyManager
with Symfony’s.env
path.use CleaniqueCoders\PhpEnvKeyManager\EnvKeyManager; $envFilePath = __DIR__ . '/../../.env'; // Adjust the path to your Symfony .env file $envManager = new EnvKeyManager($envFilePath);
-
Use in a Symfony Command
Create a Symfony console command to manage environment keys:
<?php namespace App\Command; use CleaniqueCoders\PhpEnvKeyManager\EnvKeyManager; use Symfony\Component\Console\Command\Command; use Symfony\Component\Console\Input\InputArgument; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Output\OutputInterface; class ManageEnvKeyCommand extends Command { protected static $defaultName = 'env:manage-key'; private $envManager; public function __construct(EnvKeyManager $envManager) { parent::__construct(); $this->envManager = $envManager; } protected function configure() { $this ->setDescription('Manage an environment key') ->addArgument('action', InputArgument::REQUIRED, 'Action: set, disable, enable') ->addArgument('key', InputArgument::REQUIRED, 'The environment key') ->addArgument('value', InputArgument::OPTIONAL, 'The value for set action'); } protected function execute(InputInterface $input, OutputInterface $output) { $action = $input->getArgument('action'); $key = $input->getArgument('key'); $value = $input->getArgument('value'); switch ($action) { case 'set': $this->envManager->setKey($key, $value); $output->writeln("Key {$key} set to {$value}."); break; case 'disable': $this->envManager->disableKey($key); $output->writeln("Key {$key} has been disabled."); break; case 'enable': $this->envManager->enableKey($key); $output->writeln("Key {$key} has been enabled."); break; default: $output->writeln("Invalid action. Use 'set', 'disable', or 'enable'."); return Command::FAILURE; } return Command::SUCCESS; } }
CodeIgniter
To use EnvKeyManager
in CodeIgniter, initialize it with the .env
path and use it within controllers or custom classes.
CodeIgniter Usage
-
Initialize
EnvKeyManager
with the CodeIgniter.env
path.use CleaniqueCoders\PhpEnvKeyManager\EnvKeyManager; $envFilePath = ROOTPATH . '.env'; // CodeIgniter base path to .env $envManager = new EnvKeyManager($envFilePath);
-
Use in a CodeIgniter Controller
Create a CodeIgniter controller method to manage environment keys:
<?php namespace App\Controllers; use CleaniqueCoders\PhpEnvKeyManager\EnvKeyManager; class EnvController extends BaseController { protected $envManager; public function __construct() { $this->envManager = new EnvKeyManager(ROOTPATH . '.env'); } public function manageKey($action, $key, $value = null) { switch ($action) { case 'set': $this->envManager->setKey($key, $value); return "Key {$key} set to {$value}."; case 'disable': $this->envManager->disableKey($key); return "Key {$key} has been disabled."; case 'enable': $this->envManager->enableKey($key); return "Key {$key} has been enabled."; default: return "Invalid action. Use 'set', 'disable', or 'enable'."; } } }
These framework-specific examples demonstrate how to integrate EnvKeyManager
seamlessly in Laravel, Symfony, and CodeIgniter, making it easy to manage environment keys within each framework.
Testing
composer test
Changelog
Please see CHANGELOG for more information on what has changed recently.
Contributing
Please see CONTRIBUTING for details.
Security Vulnerabilities
Please review our security policy on how to report security vulnerabilities.
Credits
License
The MIT License (MIT). Please see License File for more information.