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

Public Member Functions

object &T getInstance ($className, $givenConstructorArguments=[])
 
object &T getEmptyObject ($className)
 
 registerImplementation ($className, $alternativeClassName)
 
string getImplementationClassName ($className)
 
bool isSingleton ($className)
 
bool isPrototype ($className)
 

Public Attributes

const SCOPE_PROTOTYPE = 1
 
const SCOPE_SINGLETON = 2
 

Protected Member Functions

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

Protected Attributes

Doctrine Instantiator InstantiatorInterface $instantiator
 

Private Member Functions

array getConstructorArguments ($className, ClassSchema $classSchema, array $givenConstructorArguments)
 

Private Attributes

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 29 of file Container.php.

Member Function Documentation

◆ getConstructorArguments()

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

gets array of parameter that can be used to call a constructor

Parameters
string$className
ClassSchema$classSchema
array$givenConstructorArguments
Exceptions

Definition at line 245 of file Container.php.

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

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

◆ getEmptyObject()

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

◆ getImplementationClassName()

string TYPO3\CMS\Extbase\Object\Container\Container::getImplementationClassName (   $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 279 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 (   $className,
  $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 83 of file Container.php.

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

◆ getInstanceInternal()

◆ getInstantiator()

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

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

Returns
‪\Doctrine\Instantiator\InstantiatorInterface

Definition at line 66 of file Container.php.

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

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

◆ getLogger()

LoggerInterface TYPO3\CMS\Extbase\Object\Container\Container::getLogger ( )
protected
Returns
‪LoggerInterface

Definition at line 313 of file Container.php.

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

◆ 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 326 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 (   $instance)
protected

Call object initializer if present in object

Parameters
object$instance

Definition at line 217 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

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

Parameters
ClassSchema$classSchema
array$givenConstructorArguments
Exceptions

Definition at line 161 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().

◆ isPrototype()

bool TYPO3\CMS\Extbase\Object\Container\Container::isPrototype (   $className)
Parameters
string$className
Returns
‪bool

Definition at line 305 of file Container.php.

◆ isSingleton()

bool TYPO3\CMS\Extbase\Object\Container\Container::isSingleton (   $className)
Parameters
string$className
Returns
‪bool

Definition at line 295 of file Container.php.

◆ registerImplementation()

TYPO3\CMS\Extbase\Object\Container\Container::registerImplementation (   $className,
  $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

Definition at line 231 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 39 of file Container.php.

◆ $instantiator

Doctrine 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 55 of file Container.php.

◆ $reflectionService

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

Definition at line 59 of file Container.php.

◆ $singletonInstances

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

holds references of singletons

Definition at line 49 of file Container.php.

◆ SCOPE_PROTOTYPE

const TYPO3\CMS\Extbase\Object\Container\Container::SCOPE_PROTOTYPE = 1

Definition at line 31 of file Container.php.

Referenced by TYPO3\CMS\Extbase\Object\ObjectManager\getScope().

◆ SCOPE_SINGLETON

const TYPO3\CMS\Extbase\Object\Container\Container::SCOPE_SINGLETON = 2

Definition at line 32 of file Container.php.

Referenced by TYPO3\CMS\Extbase\Object\ObjectManager\getScope().