PHP constanten meerdere keren inlezen

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Wim Roffel

Wim Roffel

14/09/2020 10:04:57
Quote Anchor link
Ik heb een applicatie die een aantal configuratiebestanden inleest. Die bestanden bevatten constanten met dezelfde naam. Ik wil graag de waardes van al die constanten weten. Dus als een constante in meer dan één bestand voorkomt wil ik elk van die waardes weten.

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?
 
PHP hulp

PHP hulp

24/12/2024 03:17:03
 
- Ariën  -
Beheerder

- Ariën -

14/09/2020 10:26:43
Quote Anchor link
Ik heb ooit iets vergelijkbaars gemaakt.
Hoe ziet je configuratiebestand eruit in enkele lijnen?
 
Wim Roffel

Wim Roffel

14/09/2020 11:24:47
Quote Anchor link
Gewoon, een aantal regels zoals:

define('DATABASE', 'worldpress');
 
Rob Doemaarwat

Rob Doemaarwat

14/09/2020 11:30:40
Quote Anchor link
Want je wilt dit (eenmalig) inventariseren? Dan zou ik gewoon je editor door alle bestanden laten zoeken (weet niet welke je gebruikt, maar de meeste hebben wel zo'n functie).

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)
PHP script in nieuw venster Selecteer het PHP script
1
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']);
Gewijzigd op 14/09/2020 11:31:51 door Rob Doemaarwat
 
- Ariën  -
Beheerder

- Ariën -

14/09/2020 11:31:42
Quote Anchor link
Kijk eens naar https://www.php.net/manual/en/function.get-defined-constants.php

En dan vooral naar de user-key
 
Ozzie PHP

Ozzie PHP

14/09/2020 12:15:27
Quote Anchor link
Constanten kunnen maar 1x gedefinieerd worden. Daarna blijven ze ... constant :-)

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.
 
Ward van der Put
Moderator

Ward van der Put

14/09/2020 16:28:22
Quote Anchor link
Je kunt constanten binnen namespaces definiëren:

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. ;-)
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.