You are here

public function ConfigEntityBase::__sleep in Drupal 10

Same name and namespace in other branches
  1. 8 core/lib/Drupal/Core/Config/Entity/ConfigEntityBase.php \Drupal\Core\Config\Entity\ConfigEntityBase::__sleep()
  2. 9 core/lib/Drupal/Core/Config/Entity/ConfigEntityBase.php \Drupal\Core\Config\Entity\ConfigEntityBase::__sleep()

Overrides EntityBase::__sleep

1 call to ConfigEntityBase::__sleep()
View::__sleep in core/modules/views/src/Entity/View.php
3 methods override ConfigEntityBase::__sleep()
EntityDisplayBase::__sleep in core/lib/Drupal/Core/Entity/EntityDisplayBase.php
FieldConfigBase::__sleep in core/lib/Drupal/Core/Field/FieldConfigBase.php
Implements the magic __sleep() method.
View::__sleep in core/modules/views/src/Entity/View.php

File

core/lib/Drupal/Core/Config/Entity/ConfigEntityBase.php, line 342

Class

ConfigEntityBase

Namespace

Drupal\Core\Config\Entity

Code

public function __sleep() {
  $keys_to_unset = [];
  if ($this instanceof EntityWithPluginCollectionInterface) {

    // Get the plugin collections first, so that the properties are
    // initialized in $vars and can be found later.
    $plugin_collections = $this
      ->getPluginCollections();
    $vars = get_object_vars($this);
    foreach ($plugin_collections as $plugin_config_key => $plugin_collection) {

      // Save any changes to the plugin configuration to the entity.
      $this
        ->set($plugin_config_key, $plugin_collection
        ->getConfiguration());

      // If the plugin collections are stored as properties on the entity,
      // mark them to be unset.
      $keys_to_unset += array_filter($vars, function ($value) use ($plugin_collection) {
        return $plugin_collection === $value;
      });
    }
  }
  $vars = parent::__sleep();
  if (!empty($keys_to_unset)) {
    $vars = array_diff($vars, array_keys($keys_to_unset));
  }
  return $vars;
}