variabelen in define

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Peter van Kroonenburg

Peter van Kroonenburg

28/01/2017 22:02:29
Quote Anchor link
Is heb een vraag over variabelen in de functie define.

$var="userschool";

Dit werkt WEL: define("USER",'userschool');
Dit werkt NIET: define("USER",$var);

mag ik bij define geen variabelen gebruiken?

Groet,
Peter
 
PHP hulp

PHP hulp

14/11/2024 23:14:17
 
- Ariën  -
Beheerder

- Ariën -

28/01/2017 22:09:40
Quote Anchor link
Waarom werkt het niet volgens jouw?
Hier werkt het prima:
https://3v4l.org/GMZfY
 
Ozzie PHP

Ozzie PHP

29/01/2017 00:27:27
Quote Anchor link
Peter van Kroonenburg op 28/01/2017 22:02:29:

Dit werkt WEL: define("USER",'userschool');
Dit werkt NIET: define("USER",$var);

Heb je die defines in jouw test-code onder elkaar gezet toevallig?

Dat mag namelijk niet. Je kunt maar 1x iets definen. Dus misschien gaat het daar mis.
 
Frank Nietbelangrijk

Frank Nietbelangrijk

29/01/2017 00:55:26
Quote Anchor link
Bovendien is define niet bedoeld om een waarde toegewezen te krijgen at runtime (terwijl de applicatie draait). De bedoeling van define is meer iets zoals "search and replace" voordat de applicatie gestart wordt.

Je definieert enkel waardes met define die eigenlijk (bijna) nooit veranderen. Stel je wilt voor het gemak het aantal seconden per dag gemakkelijk kunnen raadplegen in je applicatie. Hiervoor zou je define kunnen gebruiken

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
define("SECS_PER_DAY", 86400); // 60s x 60m x 24u = 86400
?>


Nu kun je op verschillende andere plekken in je applicatie makkelijk rekenen met dagen
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?php
define("SECS_PER_DAY", 86400); // 60s x 60m x 24u = 86400

$tomorrow = time() + SECS_PER_DAY;

echo date('d-m-Y', $tomorrow);
?>


Bovenstaand voorbeeld is exact hetzelfde als onderstaand voorbeeld wanneer de applicatie gestart is:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
$tomorrow
= time() + 86400;

echo date('d-m-Y', $tomorrow);
?>


De tekst SECS_PER_DAY is namelijk vervangen voor 86400 voordat de applicatie gestart werd.
Gewijzigd op 29/01/2017 01:02:30 door Frank Nietbelangrijk
 
Peter van Kroonenburg

Peter van Kroonenburg

29/01/2017 09:01:28
Quote Anchor link
Bedankt voor de reacties. Ik begrijp de basis van CONSTANTEN wel en gebruik die al in verschillende scripts. Misschien is mijn benadering van mijn probleem niet goed en is er een betere werkwijze. Ik heb het nu als volgt ingericht;

Ik heb voor vier instanties een programma geschreven. Iedere instantie heeft een eigen database. In een tabel SETUP staan specifieke gegevens, adres telnummers, emails, en andere gegevens die specifiek voor die instantie van toepasing zijn.
De instanties hebben dus een eigen database maar gebruiken wel allemaal dezelfde scripts. Verder heb ik nog een ‘basis’ database.

De werking;
In het 1e startscript vult de gebruiker de naam van zijn instantie in.
In mijn ‘basis’ database staat een tabel met de DBF,USER,PW,HOST die bij de databases van de verschillende instanties horen.
Die gegevens worden opgehaald en die worden in aan CONSTANT toegewezen voor gebruikt in de de scripts.
In het 2e script wordt met die CONSTANTS verbinding met de de juist database gemaakt. Vanuit de SETUP tabel worden vervolgend de specifieke gegevens ook in CONSTANTEN gezet die in diverse scripts worden gebruikt.
Ik hoop dat het een beetje duidelijk is,
Groet,
Peter
 
Eddy E

Eddy E

29/01/2017 10:02:41
Quote Anchor link
Volkomend duidelijk.
En daar gebruik je inderdaad een DEFINE voor.

Maar is het probleem er nog? Want DEFINE var = $var; moet prima werken, mits die define nog niet eerder bestond.
 
Frank Nietbelangrijk

Frank Nietbelangrijk

29/01/2017 13:32:21
Quote Anchor link
Het zal waarschijnlijk een kwestie van smaak zijn maar persoonlijk ben ik er geen voorstander van om een waarde afkomstig van een database met een define tot een constante te defineren. Voor mij is het een gewone variabele.
 



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.