Code
Explorer
You are a developer and looking for Shopware projects?
Apply Now!
DecoratorServicePass example
$container
->
register
(
'bar'
)
->
setDecoratedService
(
'foo'
)
->
setProperty
(
'prop',
new
Reference
(
'.inner'
)
)
;
$this
->
process
(
$container
)
;
$this
->
assertEquals
(
[
'prop' =>
new
Reference
(
'bar.inner'
)
]
,
$container
->
getDefinition
(
'bar'
)
->
getProperties
(
)
)
;
}
protected
function
process
(
ContainerBuilder
$container
)
{
$pass
=
new
DecoratorServicePass
(
)
;
$pass
->
process
(
$container
)
;
}
}
$this
->container =
new
ContainerBuilder
(
)
;
$this
->container->
register
(
'request_stack', \stdClass::
class
)
;
$this
->container->
register
(
'event_dispatcher', EventDispatcher::
class
)
;
$this
->container->
register
(
'debug.stopwatch', Stopwatch::
class
)
;
$this
->container->
registerExtension
(
new
SecurityExtension
(
)
)
;
$this
->container->
loadFromExtension
(
'security',
[
'firewalls' =>
[
'main' =>
[
'pattern' => '/', 'http_basic' => true
]
]
,
]
)
;
$this
->container->
addCompilerPass
(
new
DecoratorServicePass
(
)
, PassConfig::TYPE_OPTIMIZE
)
;
$this
->container->
getCompilerPassConfig
(
)
->
setRemovingPasses
(
[
]
)
;
$this
->container->
getCompilerPassConfig
(
)
->
setAfterRemovingPasses
(
[
]
)
;
$securityBundle
=
new
SecurityBundle
(
)
;
$securityBundle
->
build
(
$this
->container
)
;
}
public
function
testEventDispatcherIsDecoratedOnDebugMode
(
)
{
$this
->container->
setParameter
(
'kernel.debug', true
)
;
public
function
testProcessSetDecoratedAsNullOnInvalid
(
)
{
$container
=
new
ContainerBuilder
(
)
;
$decoratorDefinition
=
$container
->
register
(
'decorator'
)
->
setArguments
(
[
new
Reference
(
'decorator.inner'
)
,
]
)
->
setDecoratedService
(
'unknown_decorated', null, 0, ContainerInterface::NULL_ON_INVALID_REFERENCE
)
;
(
new
DecoratorServicePass
(
)
)
->
process
(
$container
)
;
(
new
ResolveInvalidReferencesPass
(
)
)
->
process
(
$container
)
;
$this
->
assertSame
(
[
null
]
,
$decoratorDefinition
->
getArguments
(
)
)
;
}
public
function
testProcessSetOnlyDecoratedAsNullOnInvalid
(
)
{
$container
=
new
ContainerBuilder
(
)
;
$unknownArgument
=
new
Reference
(
'unknown_argument'
)
;
$decoratorDefinition
=
$container
->
register
(
'decorator'
)
new
ValidateEnvPlaceholdersPass
(
)
,
new
ResolveDecoratorStackPass
(
)
,
new
ResolveChildDefinitionsPass
(
)
,
new
RegisterServiceSubscribersPass
(
)
,
new
ResolveParameterPlaceHoldersPass
(
false, false
)
,
new
ResolveFactoryClassPass
(
)
,
new
ResolveNamedArgumentsPass
(
)
,
new
AutowireRequiredMethodsPass
(
)
,
new
AutowireRequiredPropertiesPass
(
)
,
new
ResolveBindingsPass
(
)
,
new
ServiceLocatorTagPass
(
)
,
new
DecoratorServicePass
(
)
,
new
CheckDefinitionValidityPass
(
)
,
new
AutowirePass
(
false
)
,
new
ServiceLocatorTagPass
(
)
,
new
ResolveTaggedIteratorArgumentPass
(
)
,
new
ResolveServiceSubscribersPass
(
)
,
new
ResolveReferencesToAliasesPass
(
)
,
new
ResolveInvalidReferencesPass
(
)
,
new
AnalyzeServiceReferencesPass
(
true
)
,
new
CheckCircularReferencesPass
(
)
,
new
CheckReferenceValidityPass
(
)
,
new
CheckArgumentsValidityPass
(
false
)
,
]
]
;
new
ValidateEnvPlaceholdersPass
(
)
,
new
ResolveDecoratorStackPass
(
)
,
new
ResolveChildDefinitionsPass
(
)
,
new
RegisterServiceSubscribersPass
(
)
,
new
ResolveParameterPlaceHoldersPass
(
false, false
)
,
new
ResolveFactoryClassPass
(
)
,
new
ResolveNamedArgumentsPass
(
)
,
new
AutowireRequiredMethodsPass
(
)
,
new
AutowireRequiredPropertiesPass
(
)
,
new
ResolveBindingsPass
(
)
,
new
ServiceLocatorTagPass
(
)
,
new
DecoratorServicePass
(
)
,
new
CheckDefinitionValidityPass
(
)
,
new
AutowirePass
(
false
)
,
new
ServiceLocatorTagPass
(
)
,
new
ResolveTaggedIteratorArgumentPass
(
)
,
new
ResolveServiceSubscribersPass
(
)
,
new
ResolveReferencesToAliasesPass
(
)
,
new
ResolveInvalidReferencesPass
(
)
,
new
AnalyzeServiceReferencesPass
(
true
)
,
new
CheckCircularReferencesPass
(
)
,
new
CheckReferenceValidityPass
(
)
,
new
CheckArgumentsValidityPass
(
false
)
,
]
]
;
public
function
testAutowireDecorator
(
)
{
$container
=
new
ContainerBuilder
(
)
;
$container
->
register
(
LoggerInterface::
class
, NullLogger::
class
)
;
$container
->
register
(
Decorated::
class
, Decorated::
class
)
;
$container
->
register
(
Decorator::
class
, Decorator::
class
)
->
setDecoratedService
(
Decorated::
class
)
->
setAutowired
(
true
)
;
(
new
DecoratorServicePass
(
)
)
->
process
(
$container
)
;
(
new
AutowirePass
(
)
)
->
process
(
$container
)
;
$definition
=
$container
->
getDefinition
(
Decorator::
class
)
;
$this
->
assertSame
(
Decorator::
class
.'.inner',
(string)
$definition
->
getArgument
(
1
)
)
;
}
public
function
testAutowireDecoratorChain
(
)
{
$container
=
new
ContainerBuilder
(
)
;
$container
->
register
(
LoggerInterface::
class
, NullLogger::
class
)
;
$container
->
register
(
Decorated::
class
, Decorated::
class
)
;