‪TYPO3CMS  10.4
TYPO3\CMS\Extbase\Object\Container\Container Class Reference
Inheritance diagram for TYPO3\CMS\Extbase\Object\Container\Container:
TYPO3\CMS\Core\SingletonInterface

Public Member Functions

 __construct (ContainerInterface $psrContainer)
 
object &T getInstance (string $className, array $givenConstructorArguments=[])
 
object &T getEmptyObject (string $className)
 
 registerImplementation (string $className, string $alternativeClassName)
 
string getImplementationClassName (string $className)
 

Protected Member Functions

InstantiatorInterface getInstantiator ()
 
object &T getInstanceInternal (string $className,... $givenConstructorArguments)
 
object instanciateObject (ClassSchema $classSchema,... $givenConstructorArguments)
 
 injectDependencies (object $instance, ClassSchema $classSchema)
 
 initializeObject (object $instance)
 
ReflectionService getReflectionService ()
 

Protected Attributes

InstantiatorInterface $instantiator
 

Private Member Functions

array getConstructorArguments (ClassSchema $classSchema, array $givenConstructorArguments)
 

Private Attributes

ContainerInterface $psrContainer
 
array $alternativeImplementation
 
array $singletonInstances = array( )
 
array $prototypeObjectsWhichAreCurrentlyInstanciated
 
ReflectionService $reflectionService
 

Detailed Description

Internal TYPO3 Dependency Injection container

only to be used within Extbase, not part of TYPO3 Core API. @template T

Definition at line 38 of file Container.php.

Constructor & Destructor Documentation

◆ __construct()

TYPO3\CMS\Extbase\Object\Container\Container::__construct ( ContainerInterface  $psrContainer)
Parameters
ContainerInterface$psrContainer

Definition at line 76 of file Container.php.

References TYPO3\CMS\Extbase\Object\Container\Container\$psrContainer.

Member Function Documentation

◆ getConstructorArguments()

array TYPO3\CMS\Extbase\Object\Container\Container::getConstructorArguments ( ClassSchema  $classSchema,
array  $givenConstructorArguments 
)
private

◆ getEmptyObject()

object& T TYPO3\CMS\Extbase\Object\Container\Container::getEmptyObject ( string  $className)

◆ getImplementationClassName()

string TYPO3\CMS\Extbase\Object\Container\Container::getImplementationClassName ( string  $className)

Returns the class name for a new instance, taking into account the class-extension API.

Parameters
string$className‪Base class name to evaluate
Returns
‪string Final class name to instantiate with "new [classname]

Definition at line 321 of file Container.php.

Referenced by TYPO3\CMS\Extbase\Object\Container\Container\getEmptyObject(), and TYPO3\CMS\Extbase\Object\Container\Container\getInstanceInternal().

◆ getInstance()

object& T TYPO3\CMS\Extbase\Object\Container\Container::getInstance ( string  $className,
array  $givenConstructorArguments = [] 
)

Main method which should be used to get an instance of the wished class specified by $className.

Parameters
string|class-string<T>‪$className
array$givenConstructorArguments‪the list of constructor arguments as array
Returns
‪object&T the built object

Definition at line 103 of file Container.php.

References TYPO3\CMS\Extbase\Object\Container\Container\getInstanceInternal().

◆ getInstanceInternal()

◆ getInstantiator()

InstantiatorInterface TYPO3\CMS\Extbase\Object\Container\Container::getInstantiator ( )
protected

Internal method to create the class instantiator, extracted to be mockable

Returns
‪InstantiatorInterface

Definition at line 86 of file Container.php.

References TYPO3\CMS\Extbase\Object\Container\Container\$instantiator.

Referenced by TYPO3\CMS\Extbase\Object\Container\Container\getEmptyObject().

◆ getReflectionService()

ReflectionService TYPO3\CMS\Extbase\Object\Container\Container::getReflectionService ( )
protected

Lazy load ReflectionService.

Required as this class is being loaded in ext_localconf.php and we MUST not create caches in ext_localconf.php (which ReflectionService needs to do).

Returns
‪ReflectionService

Definition at line 340 of file Container.php.

Referenced by TYPO3\CMS\Extbase\Object\Container\Container\getEmptyObject(), and TYPO3\CMS\Extbase\Object\Container\Container\getInstanceInternal().

◆ initializeObject()

TYPO3\CMS\Extbase\Object\Container\Container::initializeObject ( object  $instance)
protected

Call object initializer if present in object

Parameters
object$instance

Definition at line 248 of file Container.php.

Referenced by TYPO3\CMS\Extbase\Object\Container\Container\getEmptyObject(), and TYPO3\CMS\Extbase\Object\Container\Container\getInstanceInternal().

◆ injectDependencies()

◆ instanciateObject()

object TYPO3\CMS\Extbase\Object\Container\Container::instanciateObject ( ClassSchema  $classSchema,
  $givenConstructorArguments 
)
protected

Instantiates an object, possibly setting the constructor dependencies. Additionally, directly registers all singletons in the singleton registry, such that circular references of singletons are correctly instantiated.

Parameters
ClassSchema$classSchema
array<int,mixed>‪$givenConstructorArguments
Exceptions

Definition at line 185 of file Container.php.

References TYPO3\CMS\Extbase\Reflection\ClassSchema\getClassName(), TYPO3\CMS\Extbase\Object\Container\Container\getConstructorArguments(), and TYPO3\CMS\Extbase\Reflection\ClassSchema\isSingleton().

Referenced by TYPO3\CMS\Extbase\Object\Container\Container\getInstanceInternal().

◆ registerImplementation()

TYPO3\CMS\Extbase\Object\Container\Container::registerImplementation ( string  $className,
string  $alternativeClassName 
)

register a classname that should be used if a dependency is required. e.g. used to define default class for an interface

Parameters
string$className
string$alternativeClassName
Todo:
‪deprecate in favor of core DI configuration (aliases/overrides)

Definition at line 263 of file Container.php.

Member Data Documentation

◆ $alternativeImplementation

array TYPO3\CMS\Extbase\Object\Container\Container::$alternativeImplementation
private

registered alternative implementations of a class e.g. used to know the class for an AbstractClass or a Dependency

Definition at line 51 of file Container.php.

◆ $instantiator

InstantiatorInterface TYPO3\CMS\Extbase\Object\Container\Container::$instantiator
protected

◆ $prototypeObjectsWhichAreCurrentlyInstanciated

array TYPO3\CMS\Extbase\Object\Container\Container::$prototypeObjectsWhichAreCurrentlyInstanciated
private

Array of prototype objects currently being built, to prevent recursion.

Definition at line 67 of file Container.php.

◆ $psrContainer

ContainerInterface TYPO3\CMS\Extbase\Object\Container\Container::$psrContainer
private

◆ $reflectionService

ReflectionService TYPO3\CMS\Extbase\Object\Container\Container::$reflectionService
private

Definition at line 71 of file Container.php.

◆ $singletonInstances

array TYPO3\CMS\Extbase\Object\Container\Container::$singletonInstances = array( )
private

holds references of singletons

Definition at line 61 of file Container.php.