Support for Drupal 7 is ending on 5 January 2025—it’s time to migrate to Drupal 10! Learn about the many benefits of Drupal 10 and find migration tools in our resource center.
Problem/Motivation
According to #2346261: Deprecate entity_create() in favor of a <EntityType>::create($values) or \Drupal::entityManager()->getStorage($entity_type)->create($values), entity_create() function is going to be deprecated in favor of the create() method of the entity type class if known, or the EntityManager::create() helper.
That deprecated functions is used in a lot of different contextes.
Beta phase evaluation
Issue category | Task |
---|---|
Issue priority | Major because we do not want deprecated code in Core as it could be used as example |
Prioritized changes | The main goal of this issue is DX, performance and removing code already deprecated for 8.0.0. (Direct calls to EntityType::create are better than generic calls to entity_create for performances) |
Disruption | This change is not disruptive at all as it only replaces deprecated functions call by their exact equivalent. |
Proposed resolution
Replace the deprecated call to entity_create()
by a proper call to <EntityType>::create()
or EntityManager::create()
, according to the case, everywhere its needed.
Before:
entity_create('field_config', $field_values)->save();
$type = 'node';
entity_create($type, $node_values)->save();
After:
use Drupal\field\Entity\FieldConfig;
FieldConfig::create($field_values)->save();
use Drupal\Core\Entity\EntityManager;
$type = 'node';
EntityManager::create($type, $node_values)->save();
Remaining tasks
Task | Novice task? | Contributor instructions | Complete? |
---|---|---|---|
Create a patch | Instructions |
User interface changes
None.
API changes
None.
Comment | File | Size | Author |
---|---|---|---|
#6 | 2491011-6.patch | 13.79 KB | chananapeeyush |
#6 | interdiff-3-6.txt | 666 bytes | chananapeeyush |
#3 | 2491011.patch | 13.79 KB | chananapeeyush |
Comments
Comment #1
DuaelFrUpdate summary and title according to the change in the meta issue.
Comment #2
chananapeeyush CreditAttribution: chananapeeyush as a volunteer and commentedAssigning myself for next one.
Comment #3
chananapeeyush CreditAttribution: chananapeeyush as a volunteer and commentedReplaced 27 occurances.lets see what testbot thinks
Comment #4
DuaelFrOk for me
Comment #5
anavarreWe don't need array(), do we?
Ditto
Needs a blank line after the namespace.
Ditto
Comment #6
chananapeeyush CreditAttribution: chananapeeyush as a volunteer and commentedAddressed #5.3 and #5.4
Regarding #5.1 and #5.2, The File::create function expects array as its argument here so if we are pretty sure the above $file variable will be array then we can remove that and AFAIK about drupal 7 the file functions returned the file object but not sure about drupal 8 so typecasting should be needed here.Rerolled the patch with updated changes.
Comment #7
anavarreAh, fair point. We likely did some typecasting for a reason. Nothing to complain about, then. Thank you.
Comment #9
DuaelFrAs seen in #2490966-13: [Meta] Replace deprecated usage of entity_create with a direct call to the entity type class, demoting this issue to Normal.
Comment #10
DuaelFrAs seen in the meta issue, all the sub-issues has to be postponed and are going to be merged to split the work by entity type and not by module. Thank you for your work, we are going to do our best to preserve your attribution.
Comment #11
DuaelFrThe meta has been postponed to Drupal 8.1 and this issue is going to be merged on other issues organized by entity type and not by module.