[BUGFIX] Support DateTimeInterface in DebuggerUtility 49/58949/2
authorAndreas Wolf <dev@a-w.io>
Mon, 26 Nov 2018 08:38:34 +0000 (09:38 +0100)
committerGeorg Ringer <georg.ringer@gmail.com>
Mon, 3 Dec 2018 20:12:59 +0000 (21:12 +0100)
Change-Id: Ib38107456acd0f0535dc51083006ee77c5a81c17
Resolves: #87002
Releases: master, 8.7
Reviewed-on: https://review.typo3.org/58949
Reviewed-by: Oliver Klee <typo3-coding@oliverklee.de>
Tested-by: TYPO3com <no-reply@typo3.com>
Reviewed-by: Mathias Brodala <mbrodala@pagemachine.de>
Reviewed-by: Daniel Goerz <daniel.goerz@posteo.de>
Reviewed-by: Benni Mack <benni@typo3.org>
Tested-by: Benni Mack <benni@typo3.org>
Tested-by: Georg Ringer <georg.ringer@gmail.com>
typo3/sysext/extbase/Classes/Utility/DebuggerUtility.php
typo3/sysext/extbase/Tests/Unit/Utility/DebuggerUtilityTest.php

index 79d9836..5f7952c 100644 (file)
@@ -297,13 +297,13 @@ class DebuggerUtility
             }
         } elseif (self::$renderedObjects->contains($object) && !$plainText) {
             $dump = '<a href="javascript:;" onclick="document.location.hash=\'#' . spl_object_hash($object) . '\';" class="extbase-debug-seeabove">' . $dump . '<span class="extbase-debug-filtered">see above</span></a>';
-        } elseif ($level >= self::$maxDepth && !$object instanceof \DateTime) {
+        } elseif ($level >= self::$maxDepth && !$object instanceof \DateTimeInterface) {
             if ($plainText) {
                 $dump .= ' ' . self::ansiEscapeWrap('max depth', '47;30', $ansiColors);
             } else {
                 $dump .= '<span class="extbase-debug-filtered">max depth</span>';
             }
-        } elseif ($level > 1 && !$object instanceof \DateTime && !$plainText) {
+        } elseif ($level > 1 && !$object instanceof \DateTimeInterface && !$plainText) {
             if (($object instanceof \Countable && empty($object)) || empty($classReflection->getProperties())) {
                 $dump = '<span>' . $dump . '</span>';
             } else {
@@ -314,8 +314,8 @@ class DebuggerUtility
             $objectCount = count($object);
             $dump .= $objectCount > 0 ? ' (' . $objectCount . ' items)' : ' (empty)';
         }
-        if ($object instanceof \DateTime) {
-            $dump .= ' (' . $object->format(\DateTime::RFC3339) . ', ' . $object->getTimestamp() . ')';
+        if ($object instanceof \DateTimeInterface) {
+            $dump .= ' (' . $object->format(\DateTimeInterface::RFC3339) . ', ' . $object->getTimestamp() . ')';
         }
         if ($object instanceof \TYPO3\CMS\Extbase\DomainObject\DomainObjectInterface && !$object->_isNew()) {
             $dump .= ' (uid=' . $object->getUid() . ', pid=' . $object->getPid() . ')';
index 809b620..ffb27a0 100644 (file)
@@ -84,4 +84,26 @@ class DebuggerUtilityTest extends UnitTestCase
         $result = DebuggerUtility::var_dump($testClass, null, 8, true, false, true, [\stdClass::class]);
         self::assertNotContains($testClass->data, $result);
     }
+
+    /**
+     * @test
+     */
+    public function varDumpShowsDumpOfDateTime()
+    {
+        $date = \DateTime::createFromFormat('Y-m-d H:i:s', '2018-11-26 09:27:28', new \DateTimeZone('UTC'));
+
+        $result = DebuggerUtility::var_dump($date, null, 8, true, false, true, [\stdClass::class]);
+        self::assertContains('2018-11-26T09:27:28', $result);
+    }
+
+    /**
+     * @test
+     */
+    public function varDumpShowsDumpOfDateTimeImmutable()
+    {
+        $date = \DateTimeImmutable::createFromFormat('Y-m-d H:i:s', '2018-11-26 09:27:28', new \DateTimeZone('UTC'));
+
+        $result = DebuggerUtility::var_dump($date, null, 8, true, false, true, [\stdClass::class]);
+        self::assertContains('2018-11-26T09:27:28', $result);
+    }
 }