Chciałbym się zorientować jakie są możliwości jeśli chodzi o centralizację konfiguracji i wykorzystywanie jej zmiennych bezpośrednio w klasach. Otóż stworzyłem sobie pliczek, załóżmy config.php i zrobiłem tam tablicę, np:
$config['db']['host'] = 'localhost'; $config['db']['user'] = 'user'; $config['db']['pswd'] = 'hasieł'; $config['db']['baza'] = 'baza';
dalej mam klasę dostępową do bazy danych, taki tam banał, ale problem jest z przekazaniem zmiennych bezpośrednio do klasy np. w taki sposób:
require_once('./config.php'); class baza { private $host; //host private $user; // użytkownik private $pswd; // hasło private $baza; //baza danych private $db; private $affected_rows = 0; public function __construct() { $this->host = $config['db']['host']; $this->user = $config['db']['user']; $this->pswd = $config['db']['pswd']; $this->baza = $config['db']['baza']; } }
Do tej pory zmienne konfiguracyjne ustawiałem w każdej klasie z osobna.
Pomyślałem, że można zrobić klasę, tam zdefiniować tablice z danymi konfiguracyjnymi i utworzyć metody dostępowe żeby zwracały tablicę, coby dostęp wyglądał np. tak:
class baza { private $db; private $affected_rows = 0; public function __construct() { $conf = new Config(); $this->config = $conf->getDbConfig(); } }
Pytanie jest następujące: jakie są dobre możliwości rozwiazania tego problemu? Bo czytałem, że define raczej powinno się unikać.