Observe que a resposta aceita se aplica especificamente às entidades do nó, mas todas as entidades possuem pacotes configuráveis. Muitas entidades, como userou menu_link_content(para links de menu personalizados), possuem apenas um pacote que corresponde ao próprio tipo de entidade.
O entity_type.bundle.infoserviço, implementado por Drupal \ Core \ Entity \ EntityTypeBundleInfo , fornece acesso às informações do pacote de entidades. Seus métodos getAllBundleInfo()e getBundleInfo($entity_type_id)retornam uma matriz codificada por tipo de entidade e nome da máquina de pacote configurável, respectivamente, com o primeiro contendo uma matriz de pacotes configurados por nome da máquina de pacote configurável. Cada pacote configurável possui uma labelchave com o nome amigável do pacote traduzido.
Abaixo está um exemplo que mostra a diferença entre nomes de máquinas de entidades de conteúdo, rótulos, nomes de máquinas de pacote configurável e rótulos de pacote configurável. O código supõe que haja pelo menos um link de menu personalizado com um ID de 1. Ele também supõe que existe um articletipo de nó (pacote configurável), que existe pelo menos um nó com um ID de 1e que o nó é do tipo nó (pacote configurável) article.
<?php
$entity_type_manager = \Drupal::entityTypeManager();
$bundle_info = \Drupal::service("entity_type.bundle.info")->getAllBundleInfo();
$current_user = \Drupal::currentUser()->getAccount();
// Prints "user".
print $current_user->getEntityTypeId() . PHP_EOL;
// Prints "User".
print $current_user->getEntityType()->getLabel() . PHP_EOL;
// Prints "user".
print $current_user->bundle() . PHP_EOL;
// Prints "User".
print $bundle_info[$current_user->getEntityTypeId()][$current_user->bundle()]['label'] . PHP_EOL;
$my_menu_link = $entity_type_manager->getStorage('menu_link_content')->load(1);
// Prints "menu_link_content".
print $my_menu_link->getEntityTypeId() . PHP_EOL;
// Prints "Custom menu link".
print $my_menu_link->getEntityType()->getLabel() . PHP_EOL;
// Prints "menu_link_content".
print $my_menu_link->bundle() . PHP_EOL;
// Prints "Custom menu link".
print $bundle_info[$my_menu_link->getEntityTypeId()][$my_menu_link->bundle()]['label'] . PHP_EOL;
$my_article = $entity_type_manager->getStorage('node')->load(1);
// Prints "node".
print $my_article->getEntityTypeId() . PHP_EOL;
// Prints "Content".
print $my_article->getEntityType()->getLabel() . PHP_EOL;
// Prints "article".
print $my_article->bundle() . PHP_EOL;
// Prints "Article".
print $bundle_info[$my_article->getEntityTypeId()][$my_article->bundle()]['label'] . PHP_EOL;
Certifique-se de usar injeção de dependência sempre que possível em seu código, em vez de confiar nos métodos estáticos da Drupalclasse.