diff -u b/core/core.services.yml b/core/core.services.yml --- b/core/core.services.yml +++ b/core/core.services.yml @@ -192,7 +192,7 @@ - [setContainer, ['@service_container']] cache.backend.database: class: Drupal\Core\Cache\DatabaseBackendFactory - arguments: ['@serialization.phpserialize', '@database', '@cache_tags.invalidator.checksum'] + arguments: ['@database', '@cache_tags.invalidator.checksum', '@serialization.objectaware.default'] cache.backend.apcu: class: Drupal\Core\Cache\ApcuBackendFactory arguments: ['@app.root', '@site.path', '@cache_tags.invalidator.checksum'] @@ -421,6 +421,7 @@ class: Drupal\Component\Serialization\PhpSerialize serialization.yaml: class: Drupal\Component\Serialization\Yaml + serialization.objectaware.default: '@serialization.phpserialize' settings: class: Drupal\Core\Site\Settings diff -u b/core/lib/Drupal/Core/Cache/DatabaseBackend.php b/core/lib/Drupal/Core/Cache/DatabaseBackend.php --- b/core/lib/Drupal/Core/Cache/DatabaseBackend.php +++ b/core/lib/Drupal/Core/Cache/DatabaseBackend.php @@ -46,23 +46,23 @@ /** * Constructs a DatabaseBackend object. * - * @param \Drupal\Component\Serialization\ObjectAwareSerializationInterface $serializer - * The serialization class to use. * @param \Drupal\Core\Database\Connection $connection * The database connection. * @param \Drupal\Core\Cache\CacheTagsChecksumInterface $checksum_provider * The cache tags checksum provider. * @param string $bin * The cache bin for which the object is created. + * @param \Drupal\Component\Serialization\ObjectAwareSerializationInterface $serializer + * The serialization class to use. */ - public function __construct(ObjectAwareSerializationInterface $serializer, Connection $connection, CacheTagsChecksumInterface $checksum_provider, $bin) { + public function __construct(Connection $connection, CacheTagsChecksumInterface $checksum_provider, $bin, ObjectAwareSerializationInterface $serializer = NULL) { // All cache tables should be prefixed with 'cache_'. $bin = 'cache_' . $bin; $this->bin = $bin; - $this->serializer = $serializer; $this->connection = $connection; $this->checksumProvider = $checksum_provider; + $this->serializer = $serializer ?: \Drupal::service('serialization.objectaware.default'); } /** diff -u b/core/lib/Drupal/Core/Cache/DatabaseBackendFactory.php b/core/lib/Drupal/Core/Cache/DatabaseBackendFactory.php --- b/core/lib/Drupal/Core/Cache/DatabaseBackendFactory.php +++ b/core/lib/Drupal/Core/Cache/DatabaseBackendFactory.php @@ -31,17 +31,17 @@ /** * Constructs the DatabaseBackendFactory object. * - * @param \Drupal\Component\Serialization\ObjectAwareSerializationInterface $serializer - * The serialization class to use. * @param \Drupal\Core\Database\Connection $connection * Database connection * @param \Drupal\Core\Cache\CacheTagsChecksumInterface $checksum_provider * The cache tags checksum provider. + * @param \Drupal\Component\Serialization\ObjectAwareSerializationInterface $serializer + * The serialization class to use. */ - function __construct(ObjectAwareSerializationInterface $serializer, Connection $connection, CacheTagsChecksumInterface $checksum_provider) { - $this->serializer = $serializer; + function __construct(Connection $connection, CacheTagsChecksumInterface $checksum_provider, ObjectAwareSerializationInterface $serializer = NULL) { $this->connection = $connection; $this->checksumProvider = $checksum_provider; + $this->serializer = $serializer ?: \Drupal::service('serialization.objectaware.default'); } /** @@ -54,7 +54,7 @@ * The cache backend object for the specified cache bin. */ function get($bin) { - return new DatabaseBackend($this->serializer, $this->connection, $this->checksumProvider, $bin); + return new DatabaseBackend($this->connection, $this->checksumProvider, $bin, $this->serializer); } } diff -u b/core/lib/Drupal/Core/DrupalKernel.php b/core/lib/Drupal/Core/DrupalKernel.php --- b/core/lib/Drupal/Core/DrupalKernel.php +++ b/core/lib/Drupal/Core/DrupalKernel.php @@ -77,13 +77,13 @@ ], 'cache.container' => [ 'class' => 'Drupal\Core\Cache\DatabaseBackend', - 'arguments' => ['@serialization.phpserialize', '@database', '@cache_tags_provider.container', 'container'], + 'arguments' => ['@database', '@cache_tags_provider.container', 'container', '@serialization.objectaware.default'], ], 'cache_tags_provider.container' => [ 'class' => 'Drupal\Core\Cache\DatabaseCacheTagsChecksum', 'arguments' => ['@database'], ], - 'serialization.phpserialize' => [ + 'serialization.objectaware.default' => [ 'class' => 'Drupal\Component\Serialization\PhpSerialize', ], ], reverted: --- b/core/tests/Drupal/KernelTests/Core/Cache/ChainedFastBackendTest.php +++ a/core/tests/Drupal/KernelTests/Core/Cache/ChainedFastBackendTest.php @@ -20,7 +20,7 @@ * A new ChainedFastBackend object. */ protected function createCacheBackend($bin) { + $consistent_backend = new DatabaseBackend(\Drupal::service('database'), \Drupal::service('cache_tags.invalidator.checksum'), $bin); - $consistent_backend = new DatabaseBackend(\Drupal::service('serialization.phpserialize'), \Drupal::service('database'), \Drupal::service('cache_tags.invalidator.checksum'), $bin); $fast_backend = new PhpBackend($bin, \Drupal::service('cache_tags.invalidator.checksum')); $backend = new ChainedFastBackend($consistent_backend, $fast_backend, $bin); // Explicitly register the cache bin as it can not work through the reverted: --- b/core/tests/Drupal/KernelTests/Core/Cache/DatabaseBackendTest.php +++ a/core/tests/Drupal/KernelTests/Core/Cache/DatabaseBackendTest.php @@ -25,7 +25,7 @@ * A new DatabaseBackend object. */ protected function createCacheBackend($bin) { + return new DatabaseBackend($this->container->get('database'), $this->container->get('cache_tags.invalidator.checksum'), $bin); - return new DatabaseBackend($this->container->get('serialization.phpserialize'), $this->container->get('database'), $this->container->get('cache_tags.invalidator.checksum'), $bin); } /** reverted: --- b/core/tests/Drupal/KernelTests/Core/Command/DbDumpTest.php +++ a/core/tests/Drupal/KernelTests/Core/Command/DbDumpTest.php @@ -69,7 +69,6 @@ public function register(ContainerBuilder $container) { parent::register($container); $container->register('cache_factory', 'Drupal\Core\Cache\DatabaseBackendFactory') - ->addArgument(new Reference('serialization.phpserialize')) ->addArgument(new Reference('database')) ->addArgument(new Reference('cache_tags.invalidator.checksum')); } reverted: --- b/core/tests/Drupal/KernelTests/Core/Config/Storage/CachedStorageTest.php +++ a/core/tests/Drupal/KernelTests/Core/Config/Storage/CachedStorageTest.php @@ -87,7 +87,6 @@ parent::containerBuild($container); // Use the regular database cache backend to aid testing. $container->register('cache_factory', 'Drupal\Core\Cache\DatabaseBackendFactory') - ->addArgument(new Reference('serialization.phpserialize')) ->addArgument(new Reference('database')) ->addArgument(new Reference('cache_tags.invalidator.checksum')); }