Accessing Secrets
Prerequisites
Before accessing secrets, make sure you've installed and initialized the Secrets Manager SDK.
Basic Usage
After initializing the SDK, you can retrieve secrets with a simple API call:
PHP
<?php
use ByteHide\Secrets\SecretsManager;
// Auto-initializes from environment variables
$dbPassword = SecretsManager::get('database-connection');
echo "Connection string: $dbPassword\n";<?php
use ByteHide\Secrets\SecretsManager;
// Auto-initializes from environment variables
$dbPassword = SecretsManager::get('database-connection');
echo "Connection string: $dbPassword\n";Creating and Updating Secrets
You can create or update secrets directly from your application:
PHP
<?php
use ByteHide\Secrets\SecretsManager;
// Create a new secret
$success = SecretsManager::set('api-key', 'sk_test_abc123xyz');
// Update an existing secret
SecretsManager::set('database-connection', 'mysql:host=new-server;dbname=myapp;user=admin;password=secret');<?php
use ByteHide\Secrets\SecretsManager;
// Create a new secret
$success = SecretsManager::set('api-key', 'sk_test_abc123xyz');
// Update an existing secret
SecretsManager::set('database-connection', 'mysql:host=new-server;dbname=myapp;user=admin;password=secret');Secrets Not Found
When a secret doesn't exist, the SDK will throw an exception. Handle this gracefully:
PHP
<?php
use ByteHide\Secrets\SecretsManager;
try {
$secret = SecretsManager::get('non-existent-key');
} catch (\Exception $ex) {
// Handle missing secret
echo "Secret not found: " . $ex->getMessage() . "\n";
// You might want to create the secret or use a default value
SecretsManager::set('non-existent-key', 'default-value');
}<?php
use ByteHide\Secrets\SecretsManager;
try {
$secret = SecretsManager::get('non-existent-key');
} catch (\Exception $ex) {
// Handle missing secret
echo "Secret not found: " . $ex->getMessage() . "\n";
// You might want to create the secret or use a default value
SecretsManager::set('non-existent-key', 'default-value');
}Best Practices
Cache Configuration
The SDK includes built-in caching to improve performance:
PHP
<?php
use ByteHide\Secrets\SecretsManager;
// Configure cache with 10 minutes TTL
SecretsManager::configureCache(true, 600); // 10 minutes in seconds
// Clear cache
SecretsManager::clearCache();
// Disable cache
SecretsManager::configureCache(false);<?php
use ByteHide\Secrets\SecretsManager;
// Configure cache with 10 minutes TTL
SecretsManager::configureCache(true, 600); // 10 minutes in seconds
// Clear cache
SecretsManager::clearCache();
// Disable cache
SecretsManager::configureCache(false);Security Best Practices
- Never print or log full secret values
- Don't store secret values in plain text files
- Clear secrets from memory when no longer needed
- Use environment-specific secrets
Common Usage Patterns
Configuration Helper
Create a configuration helper for your application:
PHP
<?php
use ByteHide\Secrets\SecretsManager;
class AppConfig
{
public static function getDatabaseConnection(): string
{
return SecretsManager::get('database-connection');
}
public static function getApiKey(): string
{
return SecretsManager::get('api-key');
}
public static function getCacheTimeout(): int
{
$value = SecretsManager::get('cache-timeout-minutes');
return is_numeric($value) ? (int) $value : 10; // Default to 10
}
}<?php
use ByteHide\Secrets\SecretsManager;
class AppConfig
{
public static function getDatabaseConnection(): string
{
return SecretsManager::get('database-connection');
}
public static function getApiKey(): string
{
return SecretsManager::get('api-key');
}
public static function getCacheTimeout(): int
{
$value = SecretsManager::get('cache-timeout-minutes');
return is_numeric($value) ? (int) $value : 10; // Default to 10
}
}Laravel Integration
Integrate with Laravel applications:
PHP
<?php
// In a service provider (e.g., AppServiceProvider)
use ByteHide\Secrets\SecretsManager;
public function register()
{
$this->app->singleton('bytehide.secrets', function () {
// Environment variables are read automatically
return new class {
public function get(string $key): string
{
return SecretsManager::get($key);
}
};
});
}<?php
// In a service provider (e.g., AppServiceProvider)
use ByteHide\Secrets\SecretsManager;
public function register()
{
$this->app->singleton('bytehide.secrets', function () {
// Environment variables are read automatically
return new class {
public function get(string $key): string
{
return SecretsManager::get($key);
}
};
});
}Database Connection Example
PHP
<?php
require 'vendor/autoload.php';
use ByteHide\Secrets\SecretsManager;
function connectToDatabase(): PDO
{
$dbHost = SecretsManager::get('DB_HOST');
$dbUser = SecretsManager::get('DB_USER');
$dbPass = SecretsManager::get('DB_PASS');
echo "Connecting to $dbHost as $dbUser\n";
return new PDO("mysql:host=$dbHost", $dbUser, $dbPass);
}
$pdo = connectToDatabase();<?php
require 'vendor/autoload.php';
use ByteHide\Secrets\SecretsManager;
function connectToDatabase(): PDO
{
$dbHost = SecretsManager::get('DB_HOST');
$dbUser = SecretsManager::get('DB_USER');
$dbPass = SecretsManager::get('DB_PASS');
echo "Connecting to $dbHost as $dbUser\n";
return new PDO("mysql:host=$dbHost", $dbUser, $dbPass);
}
$pdo = connectToDatabase();