Loading core/lib/Drupal/Core/Datetime/DrupalDateTime.php +12 −1 Original line number Diff line number Diff line Loading @@ -3,6 +3,7 @@ namespace Drupal\Core\Datetime; use Drupal\Component\Datetime\DateTimePlus; use Drupal\Core\DependencyInjection\DependencySerializationTrait; use Drupal\Core\StringTranslation\StringTranslationTrait; /** Loading @@ -21,6 +22,9 @@ class DrupalDateTime extends DateTimePlus { use StringTranslationTrait; use DependencySerializationTrait { __sleep as defaultSleep; } /** * Formatted strings translation cache. Loading Loading @@ -52,7 +56,7 @@ class DrupalDateTime extends DateTimePlus { * * @var array */ protected $formatTranslationCache; protected $formatTranslationCache = []; /** * Constructs a date object. Loading Loading @@ -166,4 +170,11 @@ public function format($format, $settings = []) { return $value; } /** * {@inheritdoc} */ public function __sleep(): array { return array_diff($this->defaultSleep(), ['formatTranslationCache']); } } core/tests/Drupal/Tests/Core/Datetime/DrupalDateTimeTest.php +19 −0 Original line number Diff line number Diff line Loading @@ -271,4 +271,23 @@ public function testRfc2822DateFormat() { } } /** * Test to avoid serialization of formatTranslationCache. */ public function testSleep(): void { $tz = new \DateTimeZone(date_default_timezone_get()); $date = new DrupalDateTime('now', $tz, ['langcode' => 'en']); // Override timestamp before serialize. $date->setTimestamp(12345678); $vars = $date->__sleep(); $this->assertContains('langcode', $vars); $this->assertContains('dateTimeObject', $vars); $this->assertNotContains('formatTranslationCache', $vars); $unserialized_date = unserialize(serialize($date)); $this->assertSame(12345678, $unserialized_date->getTimestamp()); } } Loading
core/lib/Drupal/Core/Datetime/DrupalDateTime.php +12 −1 Original line number Diff line number Diff line Loading @@ -3,6 +3,7 @@ namespace Drupal\Core\Datetime; use Drupal\Component\Datetime\DateTimePlus; use Drupal\Core\DependencyInjection\DependencySerializationTrait; use Drupal\Core\StringTranslation\StringTranslationTrait; /** Loading @@ -21,6 +22,9 @@ class DrupalDateTime extends DateTimePlus { use StringTranslationTrait; use DependencySerializationTrait { __sleep as defaultSleep; } /** * Formatted strings translation cache. Loading Loading @@ -52,7 +56,7 @@ class DrupalDateTime extends DateTimePlus { * * @var array */ protected $formatTranslationCache; protected $formatTranslationCache = []; /** * Constructs a date object. Loading Loading @@ -166,4 +170,11 @@ public function format($format, $settings = []) { return $value; } /** * {@inheritdoc} */ public function __sleep(): array { return array_diff($this->defaultSleep(), ['formatTranslationCache']); } }
core/tests/Drupal/Tests/Core/Datetime/DrupalDateTimeTest.php +19 −0 Original line number Diff line number Diff line Loading @@ -271,4 +271,23 @@ public function testRfc2822DateFormat() { } } /** * Test to avoid serialization of formatTranslationCache. */ public function testSleep(): void { $tz = new \DateTimeZone(date_default_timezone_get()); $date = new DrupalDateTime('now', $tz, ['langcode' => 'en']); // Override timestamp before serialize. $date->setTimestamp(12345678); $vars = $date->__sleep(); $this->assertContains('langcode', $vars); $this->assertContains('dateTimeObject', $vars); $this->assertNotContains('formatTranslationCache', $vars); $unserialized_date = unserialize(serialize($date)); $this->assertSame(12345678, $unserialized_date->getTimestamp()); } }