darshphpdev/laravel-settings

A flexible Laravel package for managing application settings with support for file or database storage, encryption, and array format customization.

v1.0.0 2025-02-19 10:18 UTC

This package is auto-updated.

Last update: 2025-03-20 19:38:28 UTC


README

Laravel Settings

Laravel Settings

Latest Version on Packagist Total Downloads License

A flexible Laravel package for managing application settings with support for file or database storage, encryption, and array format customization.

✨ Features

  • 💾 Multiple storage drivers (file or database)
  • 🔐 Value encryption support
  • 📦 Configurable array storage formats (JSON, CSV, or serialized)
  • 🛠️ Simple helper function for easy access
  • ⚡ Laravel artisan command for easy installation
  • 🚀 Cache support for better performance

📋 Requirements

  • 🐘 PHP 7.4|8.0
  • ⚡ Laravel 7.0|8.0|9.0|10.0|11.0

📥 Installation

You can install the package via composer:

composer require darshphpdev/laravel-settings

🔧 Setup

  1. Run the installation command:
php artisan settings:install

Artisan Command

This command will:

  • 🎯 Guide you through configuration options
  • 📝 Create the config file
  • 🔄 Publish migrations (if using database driver)
  1. If using database driver, run migrations:
php artisan migrate

⚙️ Configuration

The package configuration will be published to config/settings.php. Here are the available options:

return [
    // Storage driver: 'file' or 'database'
    'driver' => 'file',

    // Enable encryption for stored values
    'encrypt' => false,

    // Format for storing arrays: 'json', 'csv', 'serialize'
    'array_format' => 'json',

    // File storage settings
    'file' => [
        'path' => storage_path('app/settings.json'),
    ],

    // Database storage settings
    'database' => [
        'table' => 'settings',
    ],

    // Cache configurations
    'cache' => [
        'key' => 'laravel-settings',
        'ttl' => 3600,
        'enabled' => true,
    ]
];

📖 Usage

🔨 Using Helper Function

// Get a setting
settings()->get('site_name', 'Default site name');

// Set a setting
settings()->set('site_name', 'My Awesome Site');

// Set multiple settings
settings()->set('site_meta', [
    'name' => 'My Awesome Site',
    'description' => 'A great site'
]);

// Get all settings
$settings = settings()->all();

// Check if a setting exists
settings()->has('site_name');

// Remove a setting
settings()->forget('site_name');

// Clear all settings
settings()->clear();

📦 Working with Arrays

The package provides three formats for storing arrays:

  1. JSON (default) 📄:
settings()->set('my_array', ['one', 'two']); // Stored as JSON
  1. CSV 📑:
settings()->set('my_array', ['one', 'two']); // Stored as "one,two"
  1. Serialized 📎:
settings()->set('my_array', ['one', 'two']); // Stored using PHP serialization

🔐 Encryption

When encryption is enabled in the config, all values are automatically encrypted before storage and decrypted when retrieved:

// With encryption enabled
settings()->set('secret_key', 'sensitive-value'); // Stored encrypted

🛡️ Security

If you discover any security-related issues, please email mustafa.softcode@gmail.com instead of using the issue tracker.

👨‍💻 Credits

📄 License

This package is open-source software licensed under the MIT License.