Application Settings di NexaUI memungkinkan Anda untuk mengkonfigurasi berbagai aspek aplikasi, mulai dari informasi dasar seperti nama dan URL aplikasi hingga pengaturan yang lebih spesifik seperti timezone, locale, dan service providers. Dokumen ini akan membahas cara mengkonfigurasi dan mengelola pengaturan aplikasi di NexaUI.
Pengaturan aplikasi utama di NexaUI disimpan dalam file config/app.php
. File ini
berisi konfigurasi umum yang berlaku untuk seluruh aplikasi.
<?php
// config/app.php
return [
/*
|--------------------------------------------------------------------------
| Application Name
|--------------------------------------------------------------------------
|
| Nama aplikasi yang akan ditampilkan di berbagai tempat seperti
| email, notifikasi, dan lainnya.
|
*/
'name' => env('APP_NAME', 'NexaUI Application'),
/*
|--------------------------------------------------------------------------
| Application Environment
|--------------------------------------------------------------------------
|
| Lingkungan aplikasi saat ini. Nilai ini menentukan set
| konfigurasi yang akan digunakan.
|
*/
'environment' => env('APP_ENV', 'production'),
/*
|--------------------------------------------------------------------------
| Application Debug Mode
|--------------------------------------------------------------------------
|
| Ketika mode debug diaktifkan, pesan error detail akan ditampilkan.
| Jika dinonaktifkan, halaman error generik akan ditampilkan.
|
*/
'debug' => env('APP_DEBUG', false),
/*
|--------------------------------------------------------------------------
| Application URL
|--------------------------------------------------------------------------
|
| URL dasar yang digunakan oleh aplikasi. Ini digunakan ketika
| framework perlu menghasilkan URL lengkap.
|
*/
'url' => env('APP_URL', 'http://localhost'),
/*
|--------------------------------------------------------------------------
| Application Timezone
|--------------------------------------------------------------------------
|
| Timezone default yang akan digunakan oleh fungsi date dan datetime
| di PHP. Gunakan nilai yang didukung oleh PHP.
|
*/
'timezone' => 'Asia/Jakarta',
/*
|--------------------------------------------------------------------------
| Application Locale Configuration
|--------------------------------------------------------------------------
|
| Locale menentukan bahasa default yang akan digunakan oleh
| service translator. Anda bebas mengatur nilai ini sesuai kebutuhan.
|
*/
'locale' => 'id',
/*
|--------------------------------------------------------------------------
| Application Fallback Locale
|--------------------------------------------------------------------------
|
| Fallback locale digunakan ketika locale saat ini tidak tersedia.
|
*/
'fallback_locale' => 'en',
/*
|--------------------------------------------------------------------------
| Encryption Key
|--------------------------------------------------------------------------
|
| Kunci ini digunakan oleh layanan enkripsi dan harus diatur ke
| string random 32 karakter. Aplikasi tidak akan aman tanpa ini.
|
*/
'key' => env('APP_KEY'),
'cipher' => 'AES-256-CBC',
/*
|--------------------------------------------------------------------------
| Autoloaded Service Providers
|--------------------------------------------------------------------------
|
| Service providers yang akan dimuat secara otomatis saat aplikasi
| dimulai. Tambahkan service provider kustom Anda di sini.
|
*/
'providers' => [
// NexaUI Framework Service Providers
App\System\Providers\DatabaseServiceProvider::class,
App\System\Providers\EventServiceProvider::class,
App\System\Providers\RouteServiceProvider::class,
App\System\Providers\ViewServiceProvider::class,
// Application Service Providers
App\Providers\AppServiceProvider::class,
App\Providers\AuthServiceProvider::class,
App\Providers\EventServiceProvider::class,
App\Providers\RouteServiceProvider::class,
],
/*
|--------------------------------------------------------------------------
| Class Aliases
|--------------------------------------------------------------------------
|
| Alias class yang akan didaftarkan ketika aplikasi dimulai.
| Alias memungkinkan Anda menggunakan class tanpa namespace lengkap.
|
*/
'aliases' => [
'App' => App\System\Facades\App::class,
'Auth' => App\System\Facades\Auth::class,
'Config' => App\System\Facades\Config::class,
'DB' => App\System\Facades\DB::class,
'Event' => App\System\Facades\Event::class,
'File' => App\System\Facades\File::class,
'Log' => App\System\Facades\Log::class,
'Mail' => App\System\Facades\Mail::class,
'Route' => App\System\Facades\Route::class,
'Session' => App\System\Facades\Session::class,
'Storage' => App\System\Facades\Storage::class,
'URL' => App\System\Facades\URL::class,
'Validator' => App\System\Facades\Validator::class,
'View' => App\System\Facades\View::class,
],
];
Anda dapat mengakses pengaturan aplikasi menggunakan fungsi config()
atau
facade Config
:
// Menggunakan fungsi helper
$appName = config('app.name');
$debug = config('app.debug');
// Menggunakan facade
use App\System\Facades\Config;
$appName = Config::get('app.name');
$debug = Config::get('app.debug');
Anda juga dapat mengatur nilai konfigurasi secara runtime (tidak persisten):
// Menggunakan fungsi helper
config(['app.timezone' => 'UTC']);
// Menggunakan facade
Config::set('app.timezone', 'UTC');
Nama aplikasi digunakan di berbagai tempat seperti email, notifikasi, dan judul halaman. URL aplikasi digunakan untuk menghasilkan URL lengkap.
'name' => env('APP_NAME', 'NexaUI Application'),
'url' => env('APP_URL', 'http://localhost'),
Environment menentukan set konfigurasi yang akan digunakan. Nilai umum adalah local
,
testing
, staging
, dan production
.
'environment' => env('APP_ENV', 'production'),
Anda dapat memeriksa environment saat ini menggunakan:
// Memeriksa apakah environment adalah production
if (app()->environment('production')) {
// Kode khusus production
}
// Memeriksa beberapa environment
if (app()->environment(['local', 'staging'])) {
// Kode untuk local atau staging
}
Debug mode menentukan apakah error detail akan ditampilkan. Aktifkan di lingkungan development dan nonaktifkan di production.
'debug' => env('APP_DEBUG', false),
Timezone menentukan zona waktu default untuk fungsi date dan datetime. Locale menentukan bahasa default untuk translasi.
'timezone' => 'Asia/Jakarta',
'locale' => 'id',
'fallback_locale' => 'en',
Anda dapat mengubah locale secara runtime:
// Mengubah locale
app()->setLocale('en');
// Mendapatkan locale saat ini
$locale = app()->getLocale();
Encryption key digunakan untuk mengenkripsi data seperti session, cookie, dan data sensitif lainnya. Key harus berupa string random 32 karakter.
'key' => env('APP_KEY'),
'cipher' => 'AES-256-CBC',
Anda dapat menghasilkan key menggunakan command:
php nexa key:generate
Service providers adalah titik bootstrap utama di NexaUI. Mereka mendaftarkan komponen dan layanan ke container aplikasi.
'providers' => [
// NexaUI Framework Service Providers
App\System\Providers\DatabaseServiceProvider::class,
App\System\Providers\EventServiceProvider::class,
App\System\Providers\RouteServiceProvider::class,
App\System\Providers\ViewServiceProvider::class,
// Application Service Providers
App\Providers\AppServiceProvider::class,
App\Providers\AuthServiceProvider::class,
App\Providers\EventServiceProvider::class,
App\Providers\RouteServiceProvider::class,
],
Untuk membuat service provider baru, gunakan command:
php nexa make:provider PaymentServiceProvider
Kemudian tambahkan ke array providers
di config/app.php
:
'providers' => [
// Other providers...
App\Providers\PaymentServiceProvider::class,
],
Aliases memungkinkan Anda menggunakan class tanpa namespace lengkap. NexaUI mendaftarkan beberapa alias bawaan untuk facades.
'aliases' => [
'App' => App\System\Facades\App::class,
'Auth' => App\System\Facades\Auth::class,
'Config' => App\System\Facades\Config::class,
'DB' => App\System\Facades\DB::class,
// Other aliases...
],
Anda dapat menambahkan alias kustom:
'aliases' => [
// Other aliases...
'Payment' => App\Facades\Payment::class,
],
NexaUI menyediakan maintenance mode yang menampilkan halaman maintenance ketika aplikasi sedang dalam pemeliharaan.
Untuk mengaktifkan maintenance mode:
php nexa down
Untuk menonaktifkan maintenance mode:
php nexa up
Anda juga dapat menyesuaikan pesan maintenance dan mengizinkan IP tertentu:
php nexa down --message="Upgrading Database" --retry=60 --allow=127.0.0.1
Untuk memeriksa apakah aplikasi dalam maintenance mode:
if (app()->isDownForMaintenance()) {
// Kode khusus maintenance mode
}
Pengaturan logging di NexaUI disimpan dalam file config/logging.php
. NexaUI
mendukung berbagai driver logging seperti single file, daily files, syslog, dan errorlog.
<?php
// config/logging.php
return [
// Default log channel
'default' => env('LOG_CHANNEL', 'stack'),
// Log channels
'channels' => [
'stack' => [
'driver' => 'stack',
'channels' => ['daily'],
],
'single' => [
'driver' => 'single',
'path' => storage_path('logs/nexa.log'),
'level' => env('LOG_LEVEL', 'debug'),
],
'daily' => [
'driver' => 'daily',
'path' => storage_path('logs/nexa.log'),
'level' => env('LOG_LEVEL', 'debug'),
'days' => 14,
],
'syslog' => [
'driver' => 'syslog',
'level' => env('LOG_LEVEL', 'debug'),
],
'errorlog' => [
'driver' => 'errorlog',
'level' => env('LOG_LEVEL', 'debug'),
],
],
];
Untuk menggunakan logging:
// Menggunakan facade
use App\System\Facades\Log;
Log::emergency($message);
Log::alert($message);
Log::critical($message);
Log::error($message);
Log::warning($message);
Log::notice($message);
Log::info($message);
Log::debug($message);
// Dengan konteks tambahan
Log::info('User logged in', ['id' => $user->id]);
// Menggunakan channel tertentu
Log::channel('slack')->info('Something happened!');
Pengaturan session di NexaUI disimpan dalam file config/session.php
. NexaUI
mendukung berbagai driver session seperti file, cookie, database, dan Redis.
<?php
// config/session.php
return [
// Default session driver
'driver' => env('SESSION_DRIVER', 'file'),
// Session lifetime in minutes
'lifetime' => env('SESSION_LIFETIME', 120),
// Session cookie name
'cookie' => env('SESSION_COOKIE', 'nexa_session'),
// Session cookie path
'path' => '/',
// Session cookie domain
'domain' => env('SESSION_DOMAIN', null),
// HTTPS only cookies
'secure' => env('SESSION_SECURE_COOKIE', false),
// HTTP access only
'http_only' => true,
// Same-site cookie setting
'same_site' => 'lax',
// File session location
'files' => storage_path('framework/sessions'),
// Database session table
'table' => 'sessions',
// Connection for database driver
'connection' => null,
// Connection for Redis driver
'store' => null,
];
Pengaturan cache di NexaUI disimpan dalam file config/cache.php
. NexaUI
mendukung berbagai driver cache seperti file, database, memcached, dan Redis.
<?php
// config/cache.php
return [
// Default cache store
'default' => env('CACHE_DRIVER', 'file'),
// Cache stores
'stores' => [
'file' => [
'driver' => 'file',
'path' => storage_path('framework/cache'),
],
'database' => [
'driver' => 'database',
'table' => 'cache',
'connection' => null,
],
'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,
],
],
],
'redis' => [
'driver' => 'redis',
'connection' => 'cache',
],
],
// Cache prefix
'prefix' => env('CACHE_PREFIX', 'nexa_cache'),
];
Pengaturan file storage di NexaUI disimpan dalam file config/filesystems.php
.
NexaUI mendukung berbagai driver storage seperti local, FTP, S3, dan SFTP.
<?php
// config/filesystems.php
return [
// Default filesystem disk
'default' => env('FILESYSTEM_DRIVER', 'local'),
// Default disk for public files
'public' => env('FILESYSTEM_PUBLIC_DRIVER', 'public'),
// Filesystem disks
'disks' => [
'local' => [
'driver' => 'local',
'root' => storage_path('app'),
],
'public' => [
'driver' => 'local',
'root' => storage_path('app/public'),
'url' => env('APP_URL').'/storage',
'visibility' => 'public',
],
's3' => [
'driver' => 's3',
'key' => env('AWS_ACCESS_KEY_ID'),
'secret' => env('AWS_SECRET_ACCESS_KEY'),
'region' => env('AWS_DEFAULT_REGION'),
'bucket' => env('AWS_BUCKET'),
'url' => env('AWS_URL'),
],
],
];
Pengaturan mail di NexaUI disimpan dalam file config/mail.php
. NexaUI
mendukung berbagai driver mail seperti SMTP, Sendmail, Mailgun, dan Amazon SES.
<?php
// config/mail.php
return [
// Default mailer
'default' => env('MAIL_MAILER', 'smtp'),
// Mailer configurations
'mailers' => [
'smtp' => [
'transport' => 'smtp',
'host' => env('MAIL_HOST', 'smtp.mailgun.org'),
'port' => env('MAIL_PORT', 587),
'encryption' => env('MAIL_ENCRYPTION', 'tls'),
'username' => env('MAIL_USERNAME'),
'password' => env('MAIL_PASSWORD'),
'timeout' => null,
'auth_mode' => null,
],
'ses' => [
'transport' => 'ses',
],
'mailgun' => [
'transport' => 'mailgun',
],
'sendmail' => [
'transport' => 'sendmail',
'path' => '/usr/sbin/sendmail -bs',
],
],
// Global "From" address
'from' => [
'address' => env('MAIL_FROM_ADDRESS', 'hello@example.com'),
'name' => env('MAIL_FROM_NAME', 'Example'),
],
];
Pengaturan queue di NexaUI disimpan dalam file config/queue.php
. NexaUI
mendukung berbagai driver queue seperti sync, database, Redis, dan Amazon SQS.
<?php
// config/queue.php
return [
// Default queue connection
'default' => env('QUEUE_CONNECTION', 'sync'),
// Queue connections
'connections' => [
'sync' => [
'driver' => 'sync',
],
'database' => [
'driver' => 'database',
'table' => 'jobs',
'queue' => 'default',
'retry_after' => 90,
],
'redis' => [
'driver' => 'redis',
'connection' => 'default',
'queue' => env('REDIS_QUEUE', 'default'),
'retry_after' => 90,
'block_for' => null,
],
],
// Failed queue jobs table
'failed' => [
'driver' => env('QUEUE_FAILED_DRIVER', 'database'),
'database' => env('DB_CONNECTION', 'mysql'),
'table' => 'failed_jobs',
],
];
Untuk meningkatkan performa di lingkungan production, NexaUI mendukung config caching. Ini menggabungkan semua file konfigurasi menjadi satu file cache.
Untuk membuat cache konfigurasi:
php nexa config:cache
Untuk menghapus cache konfigurasi:
php nexa config:clear
Catatan: Setelah mengubah file konfigurasi, Anda perlu menjalankan config:cache
lagi untuk memperbarui cache.
Pengaturan aplikasi yang tepat sangat penting untuk performa, keamanan, dan fungsionalitas aplikasi NexaUI. Dengan memahami berbagai opsi konfigurasi dan mengikuti praktik terbaik, Anda dapat membangun aplikasi yang sesuai dengan kebutuhan spesifik Anda.