Code
Explorer
You are a developer and looking for Shopware projects?
Apply Now!
ResolveFactoryClassPass example
use
Symfony\Component\DependencyInjection\Reference;
class
ResolveFactoryClassPassTest
extends
TestCase
{
public
function
testProcess
(
)
{
$container
=
new
ContainerBuilder
(
)
;
$factory
=
$container
->
register
(
'factory', 'Foo\Bar'
)
;
$factory
->
setFactory
(
[
null, 'create'
]
)
;
$pass
=
new
ResolveFactoryClassPass
(
)
;
$pass
->
process
(
$container
)
;
$this
->
assertSame
(
[
'Foo\Bar', 'create'
]
,
$factory
->
getFactory
(
)
)
;
}
public
function
testInlinedDefinitionFactoryIsProcessed
(
)
{
$container
=
new
ContainerBuilder
(
)
;
$factory
=
$container
->
register
(
'factory'
)
;
$factory
->
setFactory
(
[
(
new
Definition
(
'Baz\Qux'
)
)
->
setFactory
(
[
null, 'getInstance'
]
)
, 'create'
]
)
;
-1000 =>
[
new
ExtensionCompilerPass
(
)
]
,
]
;
$this
->optimizationPasses =
[
[
new
AutoAliasServicePass
(
)
,
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
(
)
,
else
{
if
(
!
$kernelContainer
instanceof Container
)
{
throw
new
RuntimeException
(
sprintf
(
'This command does not support the application container: "%s" does not extend "%s".',
get_debug_type
(
$kernelContainer
)
, Container::
class
)
)
;
}
(
new
XmlFileLoader
(
$container
=
new
ContainerBuilder
(
$parameterBag
=
new
EnvPlaceholderParameterBag
(
)
)
,
new
FileLocator
(
)
)
)
->
load
(
$kernelContainer
->
getParameter
(
'debug.container.dump'
)
)
;
$refl
=
new
\
ReflectionProperty
(
$parameterBag
, 'resolved'
)
;
$refl
->
setValue
(
$parameterBag
, true
)
;
$container
->
getCompilerPassConfig
(
)
->
setBeforeOptimizationPasses
(
[
]
)
;
$container
->
getCompilerPassConfig
(
)
->
setOptimizationPasses
(
[
new
ResolveFactoryClassPass
(
)
]
)
;
$container
->
getCompilerPassConfig
(
)
->
setBeforeRemovingPasses
(
[
]
)
;
}
$container
->
setParameter
(
'container.build_hash', 'lint_container'
)
;
$container
->
setParameter
(
'container.build_id', 'lint_container'
)
;
$container
->
addCompilerPass
(
new
CheckTypeDeclarationsPass
(
true
)
, PassConfig::TYPE_AFTER_REMOVING, -100
)
;
return
$this
->container =
$container
;
}
}
-1000 =>
[
new
ExtensionCompilerPass
(
)
]
,
]
;
$this
->optimizationPasses =
[
[
new
AutoAliasServicePass
(
)
,
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
(
)
,