I have the following code:
namespace Acme\\StoreBundle\\Entity;
use Doctrine\\ORM\\Mapping as ORM;
/**
* Acme\\StoreBundle\\Entity\\User
*
* @ORM\\Tabl
PHP get_class() function will return User
and namespace (see comments in php docs).
getClassMetadata() is deprecated and will be removed in the future. Use getMetadataFor() instead:
$entityName = $this->em->getMetadataFactory()->getMetadataFor(get_class($entity))->getName();
Or a complete function:
/**
* Returns Doctrine entity name
*
* @param mixed $entity
*
* @return string
* @throws \Exception
*/
private function getEntityName($entity)
{
try {
$entityName = $this->em->getMetadataFactory()->getMetadataFor(get_class($entity))->getName();
} catch (MappingException $e) {
throw new \Exception('Given object ' . get_class($entity) . ' is not a Doctrine Entity. ');
}
return $entityName;
}
This should always work (no return of Proxy class):
$em = $this->container->get('doctrine')->getEntityManager();
$className = $em->getClassMetadata(get_class($object))->getName();
As getClassMetadata
is deprecated, you can now use getMetadataFor
$entityName = $this->em->getMetadataFactory()->getMetadataFor(get_class($object))->getName();
You can use php's instanceOf operator:
if($a instanceof MyClass) { /*code*/ }
https://www.php.net/manual/pt_BR/language.operators.type.php