Autor Zpráva
nethor
Profil
Zdravím, mám dotaz spíš v obecné rovině, řešit to umím, ale zajímá mě, jestli neexistuje elegantnější řešení.

V projektu mám konstany, které lze logicky rozdělit do několika skupin, podle toho k řemu se vztahují.
V konfigu by se tedy pro přehlednost hodilo definovat konstanty typu pole, což v PHP nejde.

Někde jsem našel řešení typu define ("FRUITS", serialize (array ("apple", "cherry", "banana"))); , ale to mi připadá dost nešikovné z hlediska přístupu k uloženým konstantám.

Napadlo mě řešení vytvořením třídy Config , kde se konstanty (konstanty to v tomto případě de facto nejsou) ukládají do statické proměnné.

nějak takhle:
class Config { 
    static private $Config = array()    ;
    
    static public function Set($Group,$Key,$Value){
        self::$Config[$Group][$Key] = $Value    ;
        return $this        ;
    }

    static public function Get($Group,$Key){
        return self::$Config[$Group][$Key]        ;
    }
} 

Máte někdo lepší řešení?
Alphard
Profil
Konstanty nejsou příliš šťastné, má to hromadu nevýhod.

Třída Config je rozumné řešení, její obsah lze navíc naparsovat z nějakého inteligentního formátu, třeba Nette využívá NEON, viz toto pískoviště. Rozdělení do skupin pak vyplyne přirozeně.

Druhou věcí je, jak tuto závislost předávat dál. Přistupovat staticky k Config::Get také není ideál. Současný trend DI velí předávat instancí configu jednotlivě každé třídě. Doplňuji, ne celý config, ale jen tu část, kterou potřebuje.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: