<?php
function dumpMappedRow($mappedRow)
{
var_dump([
'created' => $mappedRow['created']->format(DateTime::ISO8601),
'modified' => $mappedRow['modified']->format(DateTime::ISO8601)
]);
}
function mutableDemo() {
$date = DateTime::createFromFormat("Y-m-d", "2015-11-24");
$mappedRow['created'] = $date;
$mappedRow['modified'] = $date;
dumpMappedRow($mappedRow);
$mappedRow['modified']->setDate(2016, 12, 25);
dumpMappedRow($mappedRow);
if ($mappedRow['created']->getTimestamp() === $mappedRow['modified']->getTimestamp()) {
echo "\nCreated and Modified are set to the same value.";
}
}
function immutableDemo() {
$date = DateTimeImmutable::createFromFormat("Y-m-d", "2015-11-24");
$mappedRow['created'] = $date;
$mappedRow['modified'] = $date;
dumpMappedRow($mappedRow);
// This actually returns a new object rather than modifying the existing one.
$mappedRow['modified'] = $mappedRow['modified']->setDate(2016, 12, 25);
dumpMappedRow($mappedRow);
if ($mappedRow['created']->getTimestamp() === $mappedRow['modified']->getTimestamp()) {
echo "\nCreated and Modified are set to the same value.";
}
}
mutableDemo();
echo "\n\n==========\n\n";
immutableDemo();
array(2) {
["created"]=>
string(24) "2015-11-24T21:23:37+0100"
["modified"]=>
string(24) "2015-11-24T21:23:37+0100"
}
array(2) {
["created"]=>
string(24) "2016-12-25T21:23:37+0100"
["modified"]=>
string(24) "2016-12-25T21:23:37+0100"
}
Created and Modified are set to the same value.
==========
array(2) {
["created"]=>
string(24) "2015-11-24T21:23:37+0100"
["modified"]=>
string(24) "2015-11-24T21:23:37+0100"
}
array(2) {
["created"]=>
string(24) "2015-11-24T21:23:37+0100"
["modified"]=>
string(24) "2016-12-25T21:23:37+0100"
}
Output for 8.3.5
Warning: PHP Startup: Unable to load dynamic library 'sodium.so' (tried: /usr/lib/php/8.3.5/modules/sodium.so (libsodium.so.23: cannot open shared object file: No such file or directory), /usr/lib/php/8.3.5/modules/sodium.so.so (/usr/lib/php/8.3.5/modules/sodium.so.so: cannot open shared object file: No such file or directory)) in Unknown on line 0
array(2) {
["created"]=>
string(24) "2015-11-24T21:23:37+0100"
["modified"]=>
string(24) "2015-11-24T21:23:37+0100"
}
array(2) {
["created"]=>
string(24) "2016-12-25T21:23:37+0100"
["modified"]=>
string(24) "2016-12-25T21:23:37+0100"
}
Created and Modified are set to the same value.
==========
array(2) {
["created"]=>
string(24) "2015-11-24T21:23:37+0100"
["modified"]=>
string(24) "2015-11-24T21:23:37+0100"
}
array(2) {
["created"]=>
string(24) "2015-11-24T21:23:37+0100"
["modified"]=>
string(24) "2016-12-25T21:23:37+0100"
}
Output for 7.3.32 - 7.3.33, 8.0.13
array(2) {
["created"]=>
string(24) "2015-11-24T19:23:37+0000"
["modified"]=>
string(24) "2015-11-24T19:23:37+0000"
}
array(2) {
["created"]=>
string(24) "2016-12-25T19:23:37+0000"
["modified"]=>
string(24) "2016-12-25T19:23:37+0000"
}
Created and Modified are set to the same value.
==========
array(2) {
["created"]=>
string(24) "2015-11-24T19:23:37+0000"
["modified"]=>
string(24) "2015-11-24T19:23:37+0000"
}
array(2) {
["created"]=>
string(24) "2015-11-24T19:23:37+0000"
["modified"]=>
string(24) "2016-12-25T19:23:37+0000"
}
Output for 7.1.32, 7.2.22 - 7.2.23, 7.3.9
array(2) {
["created"]=>
string(24) "2015-11-24T21:23:38+0100"
["modified"]=>
string(24) "2015-11-24T21:23:38+0100"
}
array(2) {
["created"]=>
string(24) "2016-12-25T21:23:38+0100"
["modified"]=>
string(24) "2016-12-25T21:23:38+0100"
}
Created and Modified are set to the same value.
==========
array(2) {
["created"]=>
string(24) "2015-11-24T21:23:38+0100"
["modified"]=>
string(24) "2015-11-24T21:23:38+0100"
}
array(2) {
["created"]=>
string(24) "2015-11-24T21:23:38+0100"
["modified"]=>
string(24) "2016-12-25T21:23:38+0100"
}
Output for 5.5.0 - 5.5.3
array(2) {
["created"]=>
string(24) "2015-11-24T21:23:37+0100"
["modified"]=>
string(24) "2015-11-24T21:23:37+0100"
}
array(2) {
["created"]=>
string(24) "2016-12-25T21:23:37+0100"
["modified"]=>
string(24) "2016-12-25T21:23:37+0100"
}
Created and Modified are set to the same value.
==========
array(2) {
["created"]=>
string(24) "2015-11-24T21:23:37+0100"
["modified"]=>
string(24) "2015-11-24T21:23:37+0100"
}
array(2) {
["created"]=>
string(24) "2016-12-25T21:23:37+0100"
["modified"]=>
string(24) "2016-12-25T21:23:37+0100"
}
Created and Modified are set to the same value.
Output for 5.4.0 - 5.4.45
array(2) {
["created"]=>
string(24) "2015-11-24T21:23:37+0100"
["modified"]=>
string(24) "2015-11-24T21:23:37+0100"
}
array(2) {
["created"]=>
string(24) "2016-12-25T21:23:37+0100"
["modified"]=>
string(24) "2016-12-25T21:23:37+0100"
}
Created and Modified are set to the same value.
==========
Fatal error: Class 'DateTimeImmutable' not found in /in/llqgu on line 32
Process exited with code 255.