Configuration
Environment Variables
Serapha utilizes a .env file to manage environment-specific settings. This file should be placed at the root of your project and is based on the provided .env.example file.
Example .env File
# DB
DB_HOST=127.0.0.1
DB_NAME=serapha
DB_USER=root
DB_PASSWORD=test1234
DB_PORT=3306
# Redis
REDIS_HOST=127.0.0.1
REDIS_PORT=6379
REDIS_PASSWORD=
REDIS_DATABASE=0
# Path
CONFIG_FILE=/app/Config/config.inc.php
PROVIDER_FILE=/app/Config/provider.inc.php
ROUTE_PATH=/app/Route
LANG_PATH=/app/Language
CACHE_PATH=/storage/cache
Setting Up Your Environment
- Copy
.env.exampleto.env:cp .env.example .env - Open
.envand customize the values as needed.
Configuration Class
Serapha provides a Config class to facilitate easy access to your configuration settings.
Loading Configuration
The framework initializes the Config class with the path to your configuration file. This is done automatically within the Core class.
Using Configuration in Code
Access Configuration Values
You can retrieve configuration values using the get method:
use Serapha\Core\Config;
// Assume $config is an instance of Config
$dbHost = $config->get('DB_HOST');
$dbName = $config->get('DB_NAME');
Access Environment Variables
To access environment variables, use the env method:
$dbHost = $config->env('DB_HOST');
Get All Configuration Values
You can obtain all configuration values using the all method:
$allConfig = $config->all();
Common Configuration Options
Database Configuration
Configure your database connection settings in the .env file:
DB_HOST=127.0.0.1
DB_NAME=serapha
DB_USER=root
DB_PASSWORD=test1234
DB_PORT=3306
Redis Configuration
Configure your Redis connection settings in the .env file:
REDIS_HOST=127.0.0.1
REDIS_PORT=6379
REDIS_PASSWORD=
REDIS_DATABASE=0
Path Configuration
Define paths for configuration files, route directory, language files, and cache:
CONFIG_FILE=/app/Config/config.inc.php
PROVIDER_FILE=/app/Config/provider.inc.php
ROUTE_PATH=/app/Route
LANG_PATH=/app/Language
CACHE_PATH=/storage/cache
URL Rewrite
Toggle URL rewriting:
URL_REWRITE=false
Working Example
Here is an example demonstrating how to use Config in your application code, specifically within a controller:
<?php
namespace App\Controller;
use Serapha\Core\Config;
use Serapha\Controller\Controller;
abstract class BaseController extends Controller
{
protected Config $config;
public function __construct(Config $config)
{
$this->config = $config;
}
public function someMethod()
{
// Access configuration values
$dbHost = $this->config->get('DB_HOST');
$cachePath = $this->config->env('CACHE_PATH');
// Use the configuration values in your logic
// ...
}
}
By organizing your configurations in this way, you can easily manage environment-specific settings and keep your application flexible and maintainable.