Prehľad triedy Config
Trieda Config, umiestnená v /app/Config.php, poskytuje základné konfiguračné nastavenia potrebné na spustenie aplikácie DotApp. Obsahuje predvolené nastavenia, ktoré zabezpečujú plynulú prevádzku frameworku, používatelia však zvyčajne potrebujú upraviť iba niekoľko kľúčových parametrov, napríklad databázu, názov aplikácie a šifrovací kľúč.
Dôležité: Šifrovací kľúč (c_enc_key) slúži na zabezpečenie hesiel a citlivých dát. Po nastavení by sa nemal meniť, pretože by to vyžadovalo resetovanie všetkých šifrovaných dát, napríklad hesiel používateľov.
Základné nastavenia
Na spustenie aplikácie DotApp musíte v index.php definovať koreňový adresár, ak je aplikácia umiestnená v podadresári. V opačnom prípade sa predvolene použije aktuálny adresár.
define('__ROOTDIR__', "path/to/your/application"); // Set this only if the application runs in a subdirectory
Vlastné konfiguračné nastavenia sa definujú v /app/config.php. Tento súbor umožňuje prepísať predvolené nastavenia a prispôsobiť framework vašim potrebám.
Konfigurácia session
DotApp poskytuje robustný systém správy session s prispôsobiteľnými nastaveniami. Nižšie sú predvolené možnosti konfigurácie session definované v /app/config.php:
'session' => [
'driver' => 'default', // Default session driver
'lifetime' => 3600, // Session expiration in seconds
'rm_always_use' => false, // Always use "Remember Me" functionality?
'rm_autologin' => false, // Enable automatic autologin?
'rm_lifetime' => 2592000, // Remember Me lifetime (30 days)
'cookie_name' => 'dotapp_session', // Session cookie name
'path' => '/', // Cookie path
'secure' => false, // Restrict to HTTPS
'httponly' => true, // Prevent XSS attacks
'samesite' => 'Strict', // Prevent CSRF attacks
'database_use' => false, // Use database for session storage?
'database_table' => 'users_sessions', // Table for database sessions
'redis_host' => '127.0.0.1', // Redis host
'redis_port' => 6379, // Redis port
'redis_timeout' => 2, // Redis connection timeout
'redis_password' => '', // Redis password
'redis_persistent' => false, // Persistent Redis connection
'redis_database' => 0, // Redis database number
'redis_prefix' => 'session:', // Redis session prefix
'file_driver_dir' => '/app/runtime/SessionDriverFile', // Directory for SessionDriverFile
'file_driver_dir2' => '/app/runtime/SessionDriverFile2', // Directory for SessionDriverFile2
]
Na prispôsobenie nastavení session použite metódu Config::session. Napríklad:
Config::session("lifetime", 30 * 24 * 3600); // Set session lifetime to 30 days
Config::session("rm_autologin", true); // Enable automatic autologin
Ovládače session
DotApp podporuje viaceré ovládače session, takže si môžete vybrať mechanizmus ukladania, ktorý najlepšie vyhovuje aplikácii. Dôležité je, že nastavenia session musia byť nakonfigurované pred definovaním ovládača, pretože ovládač tieto nastavenia použije pri inicializácii.
Dostupné ovládače
- Predvolený ovládač (
SessionDriverDefault): Používa vstavaný mechanizmus PHP$_SESSION. - Súborový ovládač (
SessionDriverFile): Ukladá session do súborov v adresári zadanom vfile_driver_dir. Vyžaduje úlohu CRON na garbage collection. - Súborový ovládač 2 (
SessionDriverFile2): Podobný akoSessionDriverFile, ale každý cookie ukladá do samostatných súborov, čo je ideálne pri veľkom počte cookies. Používafile_driver_dir2. Vyžaduje úlohu CRON na garbage collection. - Databázový ovládač (
SessionDriverDB): Ukladá session do databázy, ideálne pre prostredia s vyvažovaním záťaže. Používa tabuľku<prefix>users_sessions(predvolený prefix:dotapp_). - Redis ovládač (
SessionDriverRedis): Používa Redis na rýchle, centralizované ukladanie session, vhodné pre zostavy s vyvažovaním záťaže.
Ovládač nastavíte metódou Config::sessionDriver po nakonfigurovaní nastavení session:
Config::sessionDriver("default", SessionDriverDefault::driver()); // Default $_SESSION driver
Config::sessionDriver("default", SessionDriverFile::driver()); // File-based driver
Config::sessionDriver("default", SessionDriverFile2::driver()); // File-based driver with multiple files
Config::sessionDriver("default", SessionDriverDB::driver()); // Database driver
Config::sessionDriver("default", SessionDriverRedis::driver()); // Redis driver
Nastavenie databázového ovládača
Pre databázový ovládač musíte vytvoriť tabuľku <prefix>users_sessions. Nižšie je SQL na jej vytvorenie:
CREATE TABLE IF NOT EXISTS `dotapp_users_sessions` (
`session_id` varchar(64) NOT NULL,
`sessname` varchar(255) NOT NULL,
`values` longtext NOT NULL,
`variables` longtext NOT NULL,
`expiry` bigint NOT NULL,
`created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`session_id`,`sessname`),
KEY `idx_expiry` (`expiry`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
Na zmenu prefixu tabuľky:
Config::db("prefix", "your_prefix_");
Konfigurácia Redis ovládača
Redis ovládač nakonfigurujete aktualizáciou príslušných nastavení pomocou Config::session. Napríklad:
Config::session("redis_host", "your IP"); // Redis host
Config::session("redis_port", 6379); // Redis port
Config::session("redis_timeout", 2); // Redis connection timeout
Config::session("redis_password", "your_password"); // Redis password
Config::session("redis_persistent", false); // Persistent Redis connection
Config::session("redis_database", 0); // Redis database number
Config::session("redis_prefix", "session:"); // Redis session prefix
Konfigurácia aplikácie
DotApp umožňuje konfigurovať základné nastavenia aplikácie, napríklad názov aplikácie, šifrovací kľúč a verziu. Nižšie sú predvolené nastavenia:
'app' => [
'name' => 'dotApp123456',
'name_hash' => '', // Do not modify directly
'c_enc_key' => 'K9xP7mW3qT2rY6vL8cF4hD5aE0zJ1nB2X7bP9qRtY2mW4kZjN6vL8cF3hD5aE0xQ', // Encryption key
'version' => '1.0',
]
Na prispôsobenie týchto nastavení použite metódu Config::app:
Config::app("name", "Your Application Name"); // Set application name
Config::app("c_enc_key", "YourStrongEncryptionKey"); // Set a strong encryption key
Config::app("version", "0.1 alpha"); // Set application version
Dôležité: Šifrovací kľúč (c_enc_key) musí byť silný a bezpečný, pretože slúži na šifrovanie citlivých dát. Po počiatočnom nastavení ho nemeňte, aby ste predišli problémom s existujúcimi šifrovanými dátami.
Konfigurácia databázy
DotApp podporuje viaceré databázové ovládače (PDO a MySQLi) a umožňuje konfigurovať viaceré databázy. Databázu pridáte metódou Config::addDatabase:
Config::addDatabase("main", "127.0.0.1", "dotsystems", "dotsystems", "dotsystems", "UTF8", "MYSQL", "pdo");
Tým sa nakonfiguruje databáza s názvom main pomocou ovládača PDO s MySQL. Podporované typy databáz PDO zahŕňajú mysql, pgsql, sqlite, oci a sqlsrv.
Predvolené nastavenia databázy:
'db' => [
'prefix' => 'dotapp_', // Database table prefix
'driver' => 'pdo', // Default driver
'maindb' => 'main' // Default database name
]
Databáza main sa predvolene používa v celej aplikácii, pokiaľ nie je zadaná iná. Predvolenú databázu pre všetky moduly prepnete takto:
Config::db("maindb", "anotherdb");
Config::addDatabase("anotherdb", "127.0.0.1", "dotsystems2", "dotsystems2", "dotsystems2", "UTF8", "MYSQL", "pdo");
Na zmenu predvoleného ovládača:
Config::db("driver", "mysqli");
Dôležité: Každý ovládač si uchováva vlastné prihlasovacie údaje k databáze. Databázu nakonfigurovanú pre PDO nemožno použiť s MySQLi, pokiaľ ju znova nenakonfigurujete. Napríklad:
// Incorrect: Mixing PDO database with MySQLi driver
Config::db("driver", "mysqli");
Config::db("maindb", "anotherdb");
Config::addDatabase("anotherdb", "127.0.0.1", "dotsystems2", "dotsystems2", "dotsystems2", "UTF8", "MYSQL", "pdo");
// Correct: Matching driver and database
Config::db("driver", "mysqli");
Config::db("maindb", "anotherdb");
Config::addDatabase("anotherdb", "127.0.0.1", "dotsystems2", "dotsystems2", "dotsystems2", "UTF8", "MYSQL", "mysqli");
Dopyty používajú nakonfigurovanú predvolenú databázu:
DB::module('RAW')->q(function ($qb) {
$qb->select('*', 'shop_items')->limit(20);
})->all();
Konfigurácia modulu
DotApp umožňuje konfiguráciu špecifickú pre modul pomocou metódy Config::module, ktorá poskytuje funkciu getter a setter pre nastavenia modulu.
Príklad nastavenia a získania konfigurácie modulu:
Config::module("crm", "title", "CRM PAGE TITLE"); // Set module configuration
$title = Config::module("crm", "title"); // Get module configuration
To umožňuje vývojárom modulov poskytovať používateľom prispôsobiteľné nastavenia a zároveň udržiavať konfigurácie usporiadané a špecifické pre modul.
Dvojfaktorové overenie (2FA)
DotApp podporuje dvojfaktorové overenie (2FA) s TOTP (Time-based One-Time Password). Predvolené nastavenia sú:
'totp' => [
'issuer' => 'DotApp',
'algorithm' => 'SHA256',
'digits' => 6,
'period' => 30,
]
Na prispôsobenie vydavateľa 2FA (napríklad na zobrazenie v autentifikačných aplikáciách):
Config::totp("issuer", "MyApp");
Ostatné nastavenia (algoritmus, počet číslic, perióda) by mali zvyčajne ostať nezmenené. Konfigurácia 2FA je potrebná iba vtedy, ak vaša aplikácia používa dvojfaktorové overenie pri prihlásení.
Príklady konfigurácie
Praktické príklady konfigurácie DotApp vrátane ovládačov session, nastavenia databázy a konfigurácie modulov nájdete v sekcii Príklady. Tieto príklady ukazujú, ako tu preberané nastavenia uplatniť v reálnych situáciách.