Code
Explorer
You are a developer and looking for Shopware projects?
Apply Now!
getOriginalClass example
public
function
testGetEntityTypeFromClass
(
)
{
$apple
=
$this
->
prophesize
(
EntityTypeInterface::
class
)
;
$banana
=
$this
->
prophesize
(
EntityTypeInterface::
class
)
;
$this
->
setUpEntityTypeDefinitions
(
[
'apple' =>
$apple
,
'banana' =>
$banana
,
]
)
;
$apple
->
getOriginalClass
(
)
->
willReturn
(
'\Drupal\apple\Entity\Apple'
)
;
$banana
->
getOriginalClass
(
)
->
willReturn
(
'\Drupal\banana\Entity\Banana'
)
;
$banana
->
getClass
(
)
->
willReturn
(
'\Drupal\mango\Entity\Mango'
)
;
$banana
->
id
(
)
->
willReturn
(
'banana'
)
->
shouldBeCalledTimes
(
2
)
;
$entity_type_id
=
$this
->entityTypeRepository->
getEntityTypeFromClass
(
'\Drupal\banana\Entity\Banana'
)
;
$this
->
assertSame
(
'banana',
$entity_type_id
)
;
$entity_type_id
=
$this
->entityTypeRepository->
getEntityTypeFromClass
(
'\Drupal\mango\Entity\Mango'
)
;
$this
->
assertSame
(
'banana',
$entity_type_id
)
;
}
public
function
getEntityTypeFromClass
(
$class_name
)
{
// Check the already calculated classes first.
if
(
isset
(
$this
->classNameEntityTypeMap
[
$class_name
]
)
)
{
return
$this
->classNameEntityTypeMap
[
$class_name
]
;
}
$same_class
= 0;
$entity_type_id
= NULL;
$definitions
=
$this
->entityTypeManager->
getDefinitions
(
)
;
foreach
(
$definitions
as
$entity_type
)
{
if
(
$entity_type
->
getOriginalClass
(
)
==
$class_name
||
$entity_type
->
getClass
(
)
==
$class_name
)
{
$entity_type_id
=
$entity_type
->
id
(
)
;
if
(
$same_class
++
)
{
throw
new
AmbiguousEntityClassException
(
$class_name
)
;
}
}
}
// If no match was found check if it is a bundle class. This needs to be in // a separate loop to avoid false positives, since an entity class can // subclass another entity class.
if
(
!
$entity_type_id
)
{
$this
->
expectException
(
'Drupal\Core\Entity\Exception\EntityTypeIdLengthException'
)
;
$this
->
expectExceptionMessage
(
$message
)
;
$this
->
setUpEntityType
(
[
'id' =>
$id
]
)
;
}
/** * @covers ::getOriginalClass */
public
function
testgetOriginalClassUnchanged
(
)
{
$class
=
$this
->
randomMachineName
(
)
;
$entity_type
=
$this
->
setUpEntityType
(
[
'class' =>
$class
]
)
;
$this
->
assertEquals
(
$class
,
$entity_type
->
getOriginalClass
(
)
)
;
}
/** * @covers ::setClass * @covers ::getOriginalClass */
public
function
testgetOriginalClassChanged
(
)
{
$class
=
$this
->
randomMachineName
(
)
;
$entity_type
=
$this
->
setUpEntityType
(
[
'class' =>
$class
]
)
;
$entity_type
->
setClass
(
$this
->
randomMachineName
(
)
)
;
$this
->
assertEquals
(
$class
,
$entity_type
->
getOriginalClass
(
)
)
;
}