DateTime naar functie sturen
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
<?php
$SessionDate = new DateTime("2016-11-01");
$MyKalender = new Kalender();
print "<br>1) ";
print $SessionDate->format("d/m/Y"); // 01/11/2016
$MyKalender->GetKalData($SessionDate, $PersoonID);
print "<br>2) ";
print $SessionDate->format("d/m/Y"); // 01/12/2016
$MyKalender->DisplayKalender($SessionDate);
print "<br>3) ";
print $SessionDate->format("d/m/Y"); // 01/12/2016
?>
$SessionDate = new DateTime("2016-11-01");
$MyKalender = new Kalender();
print "<br>1) ";
print $SessionDate->format("d/m/Y"); // 01/11/2016
$MyKalender->GetKalData($SessionDate, $PersoonID);
print "<br>2) ";
print $SessionDate->format("d/m/Y"); // 01/12/2016
$MyKalender->DisplayKalender($SessionDate);
print "<br>3) ";
print $SessionDate->format("d/m/Y"); // 01/12/2016
?>
- Ariën -:
Gelieve in het vervolg bij code de [code][/code]-tags gebruiken.
Hier kan je meer lezen over de mogelijke opmaakcodes.
Alvast bedankt!
Hier kan je meer lezen over de mogelijke opmaakcodes.
Alvast bedankt!
Gewijzigd op 02/12/2016 14:54:44 door - Ariën -
http://www.helpmij.nl/forum/showthread.php/905453-Datetime-naar-functie-sturen
Was je die soms vergeten? Want er staan aardige antwoorden in.
Gewijzigd op 02/12/2016 14:54:12 door - Ariën -
Dat is ook mijn vraag. Maar ik heb nog steeds geen antwoord.
Jawel, dat heb je wel. Je datum wordt by reference meegegeven en daardoor kan de functie je datum wijzigen. De oplossing is om deze te clonen, of zoals genoemd in dat topic te serializen en te unserializen.
Dit is duidelijk niet de bedoeling = ongewest gedrag = bug.
Je bouwt in feite een nieuwe datum, creeer dan ook een nieuw datum-object.
En ja, als je het principe van call by reference bijster bent dan zul je nog voor veel onverklaarbaar gedrag komen te staan als je met classes en objecten werkt.
PHP gaat bij objecten "Opeens" variabelen 'by Reference' gebruiken waar bij alle andere variabelen zoals strings, array's en integers variabelen 'by Value' gebruikt worden. PHP is hierin erg onduidelijk.
De vraag die je zou kunnen stellen wat zit er in de variabele $vandaag ?
Antwoord: een verwijzing naar een bepaalde plek in het RAM geheugen van je computer. In de programmeertaal C zouden ze dat een pointer noemen. Dit is ook tevens de reden van het keyword new. Dit keyword reserveert ook daadwerkelijk een stuk geheugen elders op je pc en maakt daar een nieuw DateTime object in en geef het adres van dit stuk geheugen terug.
Als je dan vervolgens dit doet:
Dan kopieer je dus geen object maar enkel de verwijzing naar het object (Het geheugenadres dus). Immers om een nieuw object te maken moet je het keyword new gebruiken.
Zoals hierboven reeds vermeld kun je eventueel een object clonen. Informatie hierover vindt je hier.
Ik wist niet dat een object, datetime dus, by reference werd doorgegeven. Ik dacht dat alles by value was.