PHP constanten meerdere keren inlezen
Het normale effect zal zijn dat als ik het tweede bestand inlees het een foutmelding geeft voor al gedefiniëerde constanten en de nieuwe setting negeert. Namespaces helpen daar niet tegen.
Het lijkt erop dat tekstanalyse met reguliere expressies de enig oplossing is.
Weet iemand nog een andere oplossing?
Hoe ziet je configuratiebestand eruit in enkele lijnen?
define('DATABASE', 'worldpress');
Of je wilt dit zo gaan gebruiken in code? Dan zou ik een andere opzet kiezen (en niet steeds met regex-en door bestanden heen lopen harken). Je zou bijvoorbeeld een array kunnen maken met alle varianten, en dan bij de specifieke defines de juiste "overnemen".
Code (php)
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
//all-config.php
define('DATABASES',[
'foo' => 'Worldpress',
'bar' => 'Ander'
]);
//config.php
require('all-config.php');
define('DATABASE',DATABASES['foo']);
define('DATABASES',[
'foo' => 'Worldpress',
'bar' => 'Ander'
]);
//config.php
require('all-config.php');
define('DATABASE',DATABASES['foo']);
Gewijzigd op 14/09/2020 11:31:51 door Rob Doemaarwat
Dat je dus constanten hebt met dezelde naam, daar gaat het mis. Een constante kan maar 1x voorkomen.
Je zult dus de naamgeving moeten aanpassen.
https://www.php.net/manual/en/language.namespaces.fallback.php
Daarmee kun je gelijktijdig gelijknamige constanten gebruiken, zolang ze maar in een andere namespace zijn gedefinieerd.
Maar misschien maak ik het daarmee wel te ingewikkeld en heb je alleen maar een controle met defined() nodig om conflicten te voorkomen. ;-)