Configuration files di NexaUI memungkinkan Anda untuk mengkonfigurasi berbagai aspek aplikasi tanpa harus mengubah kode sumber. Ini mempermudah penyesuaian perilaku aplikasi di berbagai lingkungan (development, testing, production) dan memungkinkan perubahan konfigurasi tanpa deploy ulang.
File konfigurasi di NexaUI disimpan dalam direktori config/
di root aplikasi:
config/
├── app.php # Konfigurasi aplikasi umum
├── database.php # Konfigurasi database
├── cache.php # Konfigurasi cache
├── mail.php # Konfigurasi email
├── logging.php # Konfigurasi logging
├── session.php # Konfigurasi session
├── auth.php # Konfigurasi autentikasi
├── services.php # Konfigurasi layanan eksternal
└── routes.php # Konfigurasi routing (opsional)
File konfigurasi di NexaUI adalah file PHP yang mengembalikan array. Ini memberikan fleksibilitas untuk menggunakan logika PHP dalam konfigurasi Anda.
<?php
// config/app.php
return [
'name' => 'NexaUI Application',
'version' => '1.0.0',
'environment' => env('APP_ENV', 'production'),
'debug' => env('APP_DEBUG', false),
'url' => env('APP_URL', 'http://localhost'),
'timezone' => 'Asia/Jakarta',
'locale' => 'id',
'fallback_locale' => 'en',
'key' => env('APP_KEY'),
'cipher' => 'AES-256-CBC',
'providers' => [
// Core Service Providers
App\System\Providers\DatabaseServiceProvider::class,
App\System\Providers\EventServiceProvider::class,
App\System\Providers\RouteServiceProvider::class,
// Application Service Providers
App\Providers\AppServiceProvider::class,
App\Providers\AuthServiceProvider::class,
App\Providers\EventServiceProvider::class,
],
'aliases' => [
'DB' => App\System\Database\DatabaseFacade::class,
'Auth' => App\System\Auth\AuthFacade::class,
'Event' => App\System\Events\EventFacade::class,
'Cache' => App\System\Cache\CacheFacade::class,
],
];
Perhatikan penggunaan fungsi env()
untuk mengambil nilai dari environment variables,
dengan nilai default sebagai parameter kedua.
NexaUI menyediakan beberapa cara untuk mengakses nilai konfigurasi:
config()
Cara paling umum adalah menggunakan fungsi config()
:
// Mengambil seluruh array konfigurasi
$appConfig = config('app');
// Mengambil nilai spesifik
$appName = config('app.name');
$dbConnection = config('database.default');
// Mengambil nilai dengan default
$timeout = config('app.timeout', 30);
Config
Anda juga dapat menggunakan class Config
secara langsung:
use App\System\Config\Config;
// Mengambil nilai
$appName = Config::get('app.name');
// Mengambil nilai dengan default
$timeout = Config::get('app.timeout', 30);
// Memeriksa apakah konfigurasi ada
if (Config::has('mail.from')) {
// ...
}
// Mengatur nilai konfigurasi runtime (tidak persisten)
Config::set('app.debug', true);
NexaUI mendukung konfigurasi berbeda untuk lingkungan yang berbeda. Ini dicapai dengan
menggunakan environment variables dan file .env
.
.env
File .env
berisi environment variables yang spesifik untuk lingkungan tertentu:
# .env
APP_NAME="NexaUI Application"
APP_ENV=local
APP_DEBUG=true
APP_URL=http://localhost
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=nexaui
DB_USERNAME=root
DB_PASSWORD=secret
MAIL_DRIVER=smtp
MAIL_HOST=smtp.mailtrap.io
MAIL_PORT=2525
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_ENCRYPTION=null
Nilai-nilai ini dapat diakses dalam file konfigurasi menggunakan fungsi env()
.
Anda dapat menggunakan logika kondisional dalam file konfigurasi untuk mengatur nilai berbeda berdasarkan lingkungan:
<?php
// config/logging.php
$logLevel = env('APP_ENV') === 'production' ? 'error' : 'debug';
return [
'default' => env('LOG_CHANNEL', 'file'),
'channels' => [
'file' => [
'driver' => 'file',
'path' => storage_path('logs/nexa.log'),
'level' => $logLevel,
],
'syslog' => [
'driver' => 'syslog',
'level' => $logLevel,
],
],
];
Berisi konfigurasi umum aplikasi seperti nama, lingkungan, timezone, dan service providers:
<?php
// config/app.php
return [
'name' => env('APP_NAME', 'NexaUI Application'),
'environment' => env('APP_ENV', 'production'),
'debug' => env('APP_DEBUG', false),
'url' => env('APP_URL', 'http://localhost'),
'timezone' => 'Asia/Jakarta',
'locale' => 'id',
'fallback_locale' => 'en',
'key' => env('APP_KEY'),
'cipher' => 'AES-256-CBC',
'providers' => [
// Service providers...
],
'aliases' => [
// Class aliases...
],
];
Berisi konfigurasi koneksi database:
<?php
// config/database.php
return [
'default' => env('DB_CONNECTION', 'mysql'),
'connections' => [
'mysql' => [
'driver' => 'mysql',
'host' => env('DB_HOST', '127.0.0.1'),
'port' => env('DB_PORT', '3306'),
'database' => env('DB_DATABASE', 'nexaui'),
'username' => env('DB_USERNAME', 'root'),
'password' => env('DB_PASSWORD', ''),
'charset' => 'utf8mb4',
'collation' => 'utf8mb4_unicode_ci',
'prefix' => '',
'strict' => true,
'engine' => null,
],
'sqlite' => [
'driver' => 'sqlite',
'database' => env('DB_DATABASE', database_path('database.sqlite')),
'prefix' => '',
],
'pgsql' => [
'driver' => 'pgsql',
'host' => env('DB_HOST', '127.0.0.1'),
'port' => env('DB_PORT', '5432'),
'database' => env('DB_DATABASE', 'nexaui'),
'username' => env('DB_USERNAME', 'root'),
'password' => env('DB_PASSWORD', ''),
'charset' => 'utf8',
'prefix' => '',
'schema' => 'public',
'sslmode' => 'prefer',
],
],
'migrations' => 'migrations',
'redis' => [
'client' => 'predis',
'default' => [
'host' => env('REDIS_HOST', '127.0.0.1'),
'password' => env('REDIS_PASSWORD', null),
'port' => env('REDIS_PORT', 6379),
'database' => 0,
],
],
];
Berisi konfigurasi sistem cache:
<?php
// config/cache.php
return [
'default' => env('CACHE_DRIVER', 'file'),
'stores' => [
'file' => [
'driver' => 'file',
'path' => storage_path('framework/cache'),
],
'redis' => [
'driver' => 'redis',
'connection' => 'default',
],
'memcached' => [
'driver' => 'memcached',
'persistent_id' => env('MEMCACHED_PERSISTENT_ID'),
'sasl' => [
env('MEMCACHED_USERNAME'),
env('MEMCACHED_PASSWORD'),
],
'options' => [
// Memcached options...
],
'servers' => [
[
'host' => env('MEMCACHED_HOST', '127.0.0.1'),
'port' => env('MEMCACHED_PORT', 11211),
'weight' => 100,
],
],
],
],
'prefix' => env('CACHE_PREFIX', 'nexaui_cache'),
];
Berisi konfigurasi untuk pengiriman email:
<?php
// config/mail.php
return [
'driver' => env('MAIL_DRIVER', 'smtp'),
'host' => env('MAIL_HOST', 'smtp.mailgun.org'),
'port' => env('MAIL_PORT', 587),
'from' => [
'address' => env('MAIL_FROM_ADDRESS', 'hello@example.com'),
'name' => env('MAIL_FROM_NAME', 'Example'),
],
'encryption' => env('MAIL_ENCRYPTION', 'tls'),
'username' => env('MAIL_USERNAME'),
'password' => env('MAIL_PASSWORD'),
'sendmail' => '/usr/sbin/sendmail -bs',
'markdown' => [
'theme' => 'default',
'paths' => [
resource_path('views/vendor/mail'),
],
],
];
Anda dapat membuat file konfigurasi kustom untuk kebutuhan spesifik aplikasi Anda:
<?php
// config/payment.php
return [
'default' => env('PAYMENT_GATEWAY', 'midtrans'),
'gateways' => [
'midtrans' => [
'client_key' => env('MIDTRANS_CLIENT_KEY'),
'server_key' => env('MIDTRANS_SERVER_KEY'),
'sandbox' => env('MIDTRANS_SANDBOX', true),
'sanitize' => true,
'3ds' => true,
],
'doku' => [
'mall_id' => env('DOKU_MALL_ID'),
'shared_key' => env('DOKU_SHARED_KEY'),
'sandbox' => env('DOKU_SANDBOX', true),
],
],
];
Kemudian Anda dapat mengakses konfigurasi ini seperti biasa:
$defaultGateway = config('payment.default');
$midtransConfig = config('payment.gateways.midtrans');
Configuration files di NexaUI menyediakan cara yang fleksibel dan terorganisir untuk mengkonfigurasi aplikasi Anda. Dengan memisahkan konfigurasi dari kode dan menggunakan environment variables, Anda dapat dengan mudah menyesuaikan perilaku aplikasi di berbagai lingkungan tanpa mengubah kode sumber.