Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Sposób na dane konfiguracyjne
Forum PHP.pl > Forum > PHP
vefeer
Witam,

Możecie mi powiedzieć, jaki wg was jest najlepszy sposób na organizację danych konfiguracyjnych? Czy dane te są zawarte w specjalnej klasie Config.class.php, czy może po prostu wylistowane w pliku config.php w sposób define(zmienna, wartosc), czy może jeszcze inaczej? Dziękuję za odpowiedzi.
P.S. tu jest ciekawy Artykuł
kfc4
Ja używam tablic.
marcio
Ja uzywam tablice na glowny konfig a stale na sciezki generowane na podstawie konfigu.
vefeer
Czy te tablice includujecie do każdego pliku, który wymaga danych w nich zawartych?

Dodatkowe pytanie: przypuśćmy, że dane konfiguracyjne przechowujemy w tablicy $config w pliku config.php. W osobnym pliku Klasa.class.php tworzę klasę Klasa. Plik config.php includuje przed deklaracją klasy. Mam problem, ponieważ w funkcjach klasy zmienna $config jest niewidoczna mimo deklaracji global $config wewnątrz funkcji. Dziękuję za odpowiedzi.
kfc4
Nie, mamy jeden plik do którego includujemy wszystko co jest potrzebne (przynajmniej ja).

Pokaż kod. Może w złym miejscu używasz tego globala.
vefeer
CODE
<?php
define('ROOT_PATH', $_SERVER['DOCUMENT_ROOT'].'/firma/');
include(ROOT_PATH.'config/config_front.php');

class Sender
{
private $_db;

public function __construct()
{
global $config;
try
{
$this->_db = new PDO($config['dsn'], $config['username'], $config['pass']);
$this->_db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e)
{
echo 'Wystąpił błąd: '.$e->getMessage();
}
}
public function __destruct()
{
$this->_db = NULL;
}
...

config
CODE

$config = array();
$config['dsn'] = 'wartosc';
$config['username'] = 'wartosc';
$config['pass'] = 'wartosc';
skowron-line
a nei lepiej podać zmienną $config jako parametr konstruktora questionmark.gif
vefeer
W zmiennej tablicowej $config mam jeszcze masę innych zmiennych używanych w dalszych funkcjach klasy, musiałbym ją przypisać do zmiennej klasy, aby użyć jej również poza konstruktorem, a w różnych plikach, klasach wykorzystywane są różne części zmiennej $config, dlatego chciałem uniknąć wiązania jej z klasą.
skowron-line
Cytat(vefeer @ 16.09.2009, 19:39:56 ) *
funkcjach klasy

Metodach.

  1. public function __construct( $config )
  2. {
  3. $this->config = $config;
  4. }
  5.  
  6. public function inna()
  7. {
  8. echo $this->config[ 'cos_innego' ];
  9. }
vefeer
Nie zrozumieliśmy się, po prostu nie chcę przechowywać całej zmiennej $config w obiekcie klasy, kiedy ogromna część tej tablicy mi się w danej klasie nie przyda. Chcę, żeby zmienna $config przechowywała wszystkie dane konfiguracyjne, ale np. w klasie 1. tylko część tych danych mi się przyda, a w klasie 2. druga część. Gdybym w konstruktorze przekazywał zmienną $config, każdy obiekt klasy przechowywałby wszystkie pola tej zmiennej, co jest niepotrzebne.
kfc4
To też jest jest ciekawe rozwiązanie, które akurat u Ciebie by się sprawdziło:
Do np. indexu includujesz klasę konfiguracyjną. Klasa ta wygląda mniej więcej tak:
  1. class Config {
  2. public static $daj = array(
  3. 'zmienna' => 'wartosc'
  4. );
  5. }

I jak potrzebujesz czegoś to
  1. Config::$daj['zmienna'];

Dzięki temu, że zaincludujesz ją do np. indexu (lub innego front controlera) będzie zawsze pod ręką.
erix
No to jest akurat wzorzec registry.

Osobiście stosuję coś takiego, że każda klasa dziedziczy po praprzodku wszystkich klas - konstruktor automatycznie dodaje publiczną własność z konfiguracją całego systemu.

Jeśli chodzi o konfigurację pojedynczego modułu - osobne pliki, tablica w klasie, wczytywane przez konstruktor.
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.