You are here

public function ContentEntityStorageBase::create in Drupal 10

Constructs a new entity object, without permanently saving it.

Parameters

array $values: (optional) An array of values to set, keyed by property name. If the entity type has bundles, the bundle key has to be specified.

Return value

\Drupal\Core\Entity\EntityInterface A new entity object.

Overrides EntityStorageBase::create

2 calls to ContentEntityStorageBase::create()
ContentEntityStorageBase::createWithSampleValues in core/lib/Drupal/Core/Entity/ContentEntityStorageBase.php
Creates an entity with sample field values.
TermStorage::create in core/modules/taxonomy/src/TermStorage.php
1 method overrides ContentEntityStorageBase::create()
TermStorage::create in core/modules/taxonomy/src/TermStorage.php

File

core/lib/Drupal/Core/Entity/ContentEntityStorageBase.php, line 82

Class

ContentEntityStorageBase
Base class for content entity storage handlers.

Namespace

Drupal\Core\Entity

Code

public function create(array $values = []) {
  $bundle = $this
    ->getBundleFromValues($values);
  $entity_class = $this
    ->getEntityClass($bundle);

  // @todo Decide what to do if preCreate() tries to change the bundle.
  // @see https://www.drupal.org/project/drupal/issues/3230792
  $entity_class::preCreate($this, $values);

  // Assign a new UUID if there is none yet.
  if ($this->uuidKey && $this->uuidService && !isset($values[$this->uuidKey])) {
    $values[$this->uuidKey] = $this->uuidService
      ->generate();
  }
  $entity = $this
    ->doCreate($values);
  $entity
    ->enforceIsNew();
  $entity
    ->postCreate($this);

  // Modules might need to add or change the data initially held by the new
  // entity object, for instance to fill-in default values.
  $this
    ->invokeHook('create', $entity);
  return $entity;
}