Config & Environment
SkillDo v8 sử dụng phương pháp quản lý Cấu Hình mạnh mẽ kế thừa từ kiến trúc của Laravel. Mọi thông tin nhạy cảm được quản lý bởi biến môi trường .env, trong khi cấu hình mảng sẽ nằm trong thư mục /config/.
1. Cấu hình Môi Trường (.env)
Hệ thống cung cấp file .env mặc định nằm ở thư mục root của dự án.
Đây là nơi bạn khai báo các thông tin kết nối Cơ Sở Dữ Liệu, Cổng, Host, URL API, Secret Key API, và Debug Mode.
Lưu ý: Không bao giờ được commit file .env lên Git vì lý do bảo mật.
Các cấu hình .env mặc định quan trọng:
APP_NAME="SkillDo CMS.v8"
APP_ENV=local # Có 2 trạng thái: local (Nhà phát triển) và production (Môi trường thực)
APP_DEBUG=true # Bật trang hiển thị lỗi màu đỏ. Tắt (false) trên production.
APP_URL=http://localhost:8000
S_PATH="/" # Đường dẫn Sub-folder, mặc định luôn là / kể cả không dùng.
CACHE_DRIVER=file # (file, array, database, memcached, redis)
SESSION_DRIVER=file # (file, database, array)
QUEUE_CONNECTION=sync # (sync, database, redis)
# Database MySQL
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=skilldocms_db
DB_USERNAME=root
DB_PASSWORD=
# Cache Driver Redis
REDIS_CLIENT=phpredis
REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null
REDIS_PORT=6379
# JSON Web Token (JWT API)
JWT_PUBLIC_KEY=
JWT_PRIVATE_KEY=
JWT_TTL=480 # Thời gian sống token bằng phút
Cách lấy giá trị .env trong mã PHP
Sử dụng hàm toàn cục env() để rút trích cấu hình. Chú ý, bạn luôn CẦN có giá trị mặc định cho trường hợp file .env bị thiếu dòng đó.
$appEnv = env('APP_ENV', 'production');
// Nó sẽ đọc dòng APP_ENV=local. Nếu không có dòng đó, trả về biến thứ 2 'production'
2. Quản Lý File Cấu Hình (/config/)
Nếu .env là nơi chứa những cái String (Chuỗi) không đổi, thì thư mục config/ là nơi chứa các giá trị Mảng (Array) động cho CMS.
Cấu trúc mảng cấu hình
Các file cấu hình trả về 1 array gốc nhiều cấp bậc.
Ví dụ file config/cms.php
return [
'admin' => [
'prefix' => 'admin', // Tiền tố URL vào quản trị (ví dụ /admin/)
],
'plugins' => [
'folder' => 'plugins' // Thư mục mã nguồn chứa bộ Plugin
],
'theme' => [
'default' => 'theme-store', // Khai báo theme core
'child' => 'theme-child' // Khai báo theme ghi đè
],
];
Lấy thông tin từ file Config
Để gọi bất kì thông tin cấu hình nào, ta sử dụng Facade Config hoặc helper config() được tiêm toàn cục.
Cú pháp là: TÊN FOLDER CHẤM (.) TÊN KEY
// Gọi thông qua Helper
$adminPath = config('cms.admin.prefix');
// Kết quả: string "admin"
// Truyền vào 1 tham số phụ làm mặc định (fallback array) nếu 'not_exist_key' chưa được khai báo
$cache = config('cms.not_exist_key', 'mặc-định-ở-đây');
// Gọi thông qua Facade
use SkillDo\Facades\Config;
$themeName = Config::get('cms.theme.default');
Đặt lại giá trị Cấu hình tạm thời lúc chạy (Runtime)
Bạn có thể chỉnh sửa đè (override) một cấu hình đang chạy ở giữa một Request (ví dụ bạn làm một Plugin đổi theme tự động vào ban đêm). Config update sẽ tồn tại tạm thời và DỪNG ngay khu Request kết thúc.
// Khi gọi hàm config truyền vào một MẢNG thì sẽ biến thành set (đặt đè) giá trị
config(['cms.theme.default' => 'dark-theme-mode']);
// Khi lấy ra, bây giờ sẽ là dark-theme-mode
$currentTheme = config('cms.theme.default');