[php] Applicatie configuratie instellingen in een OO app

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Michali
  • Registratie: Juli 2002
  • Laatst online: 29-05 22:54
Als ik een app in php schrijf (of alleen al een website soms) krijg je altijd een aantal zaken die je gemakkelijk in wilt kunnen stellen, de configuratie instellingen.

Nu los ik dit op door een apart bestand te maken (vaak genaamd config.php) waarin ik een grote array met naam => waarde koppelingen in zet of een aantal losse variabelen. Deze waarden gebruik ik dan in de rest van de app, dingen zoals database authorisatie bijvoorbeeld.

Nu ben ik begonnen met het schrijven van een nieuwe app in php5 geheel (voor zover mogelijk) OO. Nu stuit ik alleen op het probleem dat ik bepaalde waarden in een class beschikbaar wil maken. Nu kan ik dit natuurlijk oplossen door gewoon een de config variabel als global te defineren of de superglobal $GLOBALS array te gebruiken. Toch houd iets me een beetje tegen. Mischien dat iemand een betere oplossing weet of brengt deze methode verder geen problemen met zich mee? Ik zou natuurlijk een singleton settings factory kunnen maken oid. met methoden die waarden van deze array return etc. maar dan nog maakt deze instance ook gebruik van een globale variabel.

Mischien moet ik hier niet zo op letten, maar ik vraag me toch af hoe jullie configuratie instellingen implementeren. Mischien is er een algemeen patroon voor dit soort dingen?

Noushka's Magnificent Dream | Unity


Acties:
  • 0 Henk 'm!

  • Bobco
  • Registratie: Januari 2001
  • Laatst online: 30-10-2023

Bobco

I used to dream about Verona.

Als ik dit in Java doe (OO is OO tenslotte), dan maak ik meestal een singleton die de instellingen uit een configuratiefile leest. In de anders classes kan de instance van de singleton worden opgehaald door een simpele Configuratie config = Configuratie.getInstance() aanroep. Op deze manier verberg je mooi voor de andere classes hoe en waar die instellingen fysiek worden opgeslagen.

With the light in our eyes, it's hard to see.


Acties:
  • 0 Henk 'm!

  • Michali
  • Registratie: Juli 2002
  • Laatst online: 29-05 22:54
Daar dacht ik dus ook aan. Ik denk dus dat ik dat ga implementeren. Mischien nog andere die ook een goede solide techniek hiervoor hebben?

Noushka's Magnificent Dream | Unity


Acties:
  • 0 Henk 'm!

  • snoopy
  • Registratie: December 2000
  • Laatst online: 17-08 08:27
Zelf heb ik een configuratiebestand en een bestand met een aantal algemene functies die aangeroepen worden en een van die functies leest de configuratie uit en geeft deze terug.

vb.

PHP:
1
2
3
4
5
6
7
<?php
function config($variable)
{
  $returnvar = isset($GLOBALS['config'][$variable]) ? $GLOBALS['config'][$variable] : '';
  return $returnvar;
}
?>


Deze roep je dus aan met de variabele waarvan je de waarde wilt hebben. Op deze manier kan je dus ook bijv. configuratiewaarden uit een database-tabel laten halen o.i.d. Is dus eigenlijk hetzelfde als het bovenstaande idee van Bobco, alleen dan niet in een aparte class.

Acties:
  • 0 Henk 'm!

  • GiLuX
  • Registratie: Juni 1999
  • Laatst online: 18-11-2022
een singleton is idd een goede OO manier om die config waardes mee optehalen.

wat betreft de config file zelf,
om configuratie files te maken zijn er een paar kant en klare tools die het leven makkelijk kunnen maken.
in pear zit een tool om configuratie bestanden te creeren en te bewerken(kan er bv ook xml config bestanden mee maken/bewerken): http://pear.php.net/package/Config

ook bestaat er zoiets als patconfiguration wat nog uitgebreider is:
http://www.php-tools.net/

"I disagree with what you are saying, but I will defend to the death your right to say it." -- not clear who