Code
Explorer
You are a developer and looking for Shopware projects?
Apply Now!
mergeConstraints example
$loader
=
$this
->
createAnnotationLoader
(
)
;
$namespace
=
$this
->
getFixtureNamespace
(
)
;
// Load Parent MetaData
$parent_metadata
=
new
ClassMetadata
(
$namespace
.'\EntityParent'
)
;
$loader
->
loadClassMetadata
(
$parent_metadata
)
;
$metadata
=
new
ClassMetadata
(
$namespace
.'\Entity'
)
;
$loader
->
loadClassMetadata
(
$metadata
)
;
// Merge parent metaData.
$metadata
->
mergeConstraints
(
$parent_metadata
)
;
$expected_parent
=
new
ClassMetadata
(
$namespace
.'\EntityParent'
)
;
$expected_parent
->
addPropertyConstraint
(
'other',
new
NotNull
(
)
)
;
$expected_parent
->
getReflectionClass
(
)
;
$expected
=
new
ClassMetadata
(
$namespace
.'\Entity'
)
;
$expected
->
setGroupSequence
(
[
'Foo', 'Entity'
]
)
;
$expected
->
addConstraint
(
new
ConstraintA
(
)
)
;
$expected
->
addConstraint
(
new
Callback
(
[
'Symfony\Component\Validator\Tests\Fixtures\CallbackClass', 'callback'
]
)
)
;
$expected
->
addConstraint
(
new
Sequentially
(
[
if
(
!
class_exists
(
$class
)
&& !
interface_exists
(
$class
, false
)
)
{
throw
new
NoSuchMetadataException
(
sprintf
(
'The class or interface "%s" does not exist.',
$class
)
)
;
}
$cacheItem
=
$this
->cache?->
getItem
(
$this
->
escapeClassName
(
$class
)
)
;
if
(
$cacheItem
?->
isHit
(
)
)
{
$metadata
=
$cacheItem
->
get
(
)
;
// Include constraints from the parent class
$this
->
mergeConstraints
(
$metadata
)
;
return
$this
->loadedClasses
[
$class
]
=
$metadata
;
}
$metadata
=
new
ClassMetadata
(
$class
)
;
$this
->loader?->
loadClassMetadata
(
$metadata
)
;
if
(
null !==
$cacheItem
)
{
$this
->cache->
save
(
$cacheItem
->
set
(
$metadata
)
)
;
}
if
(
!
class_exists
(
$class
)
&& !
interface_exists
(
$class
, false
)
)
{
throw
new
NoSuchMetadataException
(
sprintf
(
'The class or interface "%s" does not exist.',
$class
)
)
;
}
$cacheItem
=
$this
->cache?->
getItem
(
$this
->
escapeClassName
(
$class
)
)
;
if
(
$cacheItem
?->
isHit
(
)
)
{
$metadata
=
$cacheItem
->
get
(
)
;
// Include constraints from the parent class
$this
->
mergeConstraints
(
$metadata
)
;
return
$this
->loadedClasses
[
$class
]
=
$metadata
;
}
$metadata
=
new
ClassMetadata
(
$class
)
;
$this
->loader?->
loadClassMetadata
(
$metadata
)
;
if
(
null !==
$cacheItem
)
{
$this
->cache->
save
(
$cacheItem
->
set
(
$metadata
)
)
;
}
$this
->
assertCount
(
1,
$properties
)
;
$this
->
assertEquals
(
'getLastName',
$properties
[
0
]
->
getName
(
)
)
;
$this
->
assertEquals
(
$constraints
,
$properties
[
0
]
->
getConstraints
(
)
)
;
}
public
function
testMergeConstraintsMergesClassConstraints
(
)
{
$parent
=
new
ClassMetadata
(
self::PARENTCLASS
)
;
$parent
->
addConstraint
(
new
ConstraintA
(
)
)
;
$this
->metadata->
mergeConstraints
(
$parent
)
;
$this
->metadata->
addConstraint
(
new
ConstraintA
(
)
)
;
$constraints
=
[
new
ConstraintA
(
[
'groups' =>
[
'Default',
'EntityParent',
'Entity',
]
]
)
,
new
ConstraintA
(
[
'groups' =>
[
'Default',
'Entity',
]
]
)
,