/

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";

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');

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');
}

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);

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
    }
}

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);
            }
        };
    });
}

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();

Next Steps

Previous
Installation