Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][OOP] Config "globalnie".
Forum PHP.pl > Forum > Przedszkole
uncuncunc
Posiadam klasę która odczytuje pliki konfiguracyjne, jednak jak jej używać "globalnie", tak aby pobrane dane, były dostępne w innych klasach?

  1. class DB // lub jakakolwiek inna klasa
  2. {
  3. public $config;
  4.  
  5. public function __constructor()
  6. {
  7. $this->config = Config::get(); //w każdej klasie, za każdym razem robić coś takiego?
  8. }
  9. }


Tak ma to wyglądać czy są inne sposoby, aby plik konfiguracyjny był widziany "globalnie" dla obojętnie jakiej klasy.
piotrex41
Jeśli masz klasę config, to musisz zrobić sobie pliczek w którym stworzysz instancję tej klasy, np. o nazwie core.php.

Struktura pliku core.php:
1. include lub require -> wczytujesz pliki klas.
2. Tworzysz instancję klasy config:
  1. $_config = new Config();

3. Przekazujesz obiekt klasy config do innej klasy, np. DB:
  1. $_db = new DB($_config);


I teraz w klasie DB w konstruktorze musisz zapisać obiekt do zmiennej klasowej:
  1. <?php
  2.  
  3. class DB
  4. {
  5. protected $_config; //tu będzie obiekt klasy config
  6.  
  7. public function __construct($config)
  8. {
  9. $this->_config = $config;
  10. }
  11.  
  12. // TERAZ JAK UŻYWAĆ?
  13. // Odwołujesz się do metod:
  14. // $this->_config->nazwametody();
  15. // Odwołujesz się do zmiennych:
  16. // $this->_config->zmienna;
  17. }
czychacz
sorry, ale nie lepiej zastosować wzorzec singleton, tworząc tylko jedną instancję klasy obsługującej konfigurację, a później w konstruktorach innych klas po prostu odwołując się do tej instancji?
http://pl.wikipedia.org/wiki/Singleton_%28...c_projektowy%29
Crozin
Nie, nie lepiej.
piotrex41
Można ale osobiście uważam, że ten wzorzec jest nie najlepszy. Łamie dwie podstawowe zasady: odpowiedniości i open-close. Poza tym nie wiem czy początkująca osoba sobie z nim poradzi.

Poza tym ja tworzę jedną instancję, i przekazuję tylko w zmiennej obiekt tej klasy do innej klasy. To także ma wady, ale cóż, nic nie jest doskonałe biggrin.gif
uncuncunc
Wzorzec nie poradzi sobie z wieloma plikami. Dzięki za nakierowanie.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.