TYPO3 CMS  TYPO3_8-7
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 ()
 
 getInstance ($className, $givenConstructorArguments=[])
 
 getEmptyObject ($className)
 
 registerImplementation ($className, $alternativeClassName)
 
 getImplementationClassName ($className)
 
 isSingleton ($className)
 
 isPrototype ($className)
 

Public Attributes

const SCOPE_PROTOTYPE = 1
 
const SCOPE_SINGLETON = 2
 

Protected Member Functions

 getClassInfoFactory ()
 
 getClassInfoCache ()
 
 getInstantiator ()
 
 getInstanceInternal ($className, $givenConstructorArguments=[])
 
 instanciateObject (\TYPO3\CMS\Extbase\Object\Container\ClassInfo $classInfo, array $givenConstructorArguments)
 
 injectDependencies ($instance, \TYPO3\CMS\Extbase\Object\Container\ClassInfo $classInfo)
 
 initializeObject ($instance, \TYPO3\CMS\Extbase\Object\Container\ClassInfo $classInfo)
 
 log ($message, $severity)
 

Protected Attributes

 $instantiator = null
 

Private Member Functions

 getConstructorArguments ($className, \TYPO3\CMS\Extbase\Object\Container\ClassInfo $classInfo, array $givenConstructorArguments)
 
 getClassInfo ($className)
 

Private Attributes

 $cache = null
 
 $alternativeImplementation
 
 $classInfoFactory = null
 
 $singletonInstances = []
 
 $prototypeObjectsWhichAreCurrentlyInstanciated
 

Detailed Description

Internal TYPO3 Dependency Injection container

Definition at line 20 of file Container.php.

Constructor & Destructor Documentation

◆ __construct()

TYPO3\CMS\Extbase\Object\Container\Container::__construct ( )

Constructor is protected since container should be a singleton.

See also
getContainer()

Definition at line 72 of file Container.php.

Member Function Documentation

◆ getClassInfo()

TYPO3\CMS\Extbase\Object\Container\Container::getClassInfo (   $className)
private

◆ getClassInfoCache()

TYPO3\CMS\Extbase\Object\Container\Container::getClassInfoCache ( )
protected

Internal method to create the classInfoCache, extracted to be mockable.

Returns

Definition at line 94 of file Container.php.

References TYPO3\CMS\Extbase\Object\Container\Container\$cache, and TYPO3\CMS\Core\Utility\GeneralUtility\makeInstance().

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

◆ getClassInfoFactory()

TYPO3\CMS\Extbase\Object\Container\Container::getClassInfoFactory ( )
protected

Internal method to create the classInfoFactory, extracted to be mockable.

Returns

Definition at line 81 of file Container.php.

References TYPO3\CMS\Extbase\Object\Container\Container\$classInfoFactory, and TYPO3\CMS\Core\Utility\GeneralUtility\makeInstance().

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

◆ getConstructorArguments()

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

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

Parameters
string$className
\TYPO3\CMS\Extbase\Object\Container\ClassInfo$classInfo
array$givenConstructorArguments
Exceptions

Definition at line 293 of file Container.php.

References TYPO3\CMS\Extbase\Object\Container\Container\getInstanceInternal(), and TYPO3\CMS\Extbase\Object\Container\Container\log().

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

◆ getEmptyObject()

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

◆ getImplementationClassName()

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$classNameBase class name to evaluate
Returns
string Final class name to instantiate with "new [classname]

Definition at line 325 of file Container.php.

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

◆ getInstance()

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$className
array$givenConstructorArgumentsthe list of constructor arguments as array
Returns
object the built object

Definition at line 123 of file Container.php.

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

◆ getInstanceInternal()

◆ getInstantiator()

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

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

Returns

Definition at line 107 of file Container.php.

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

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

◆ initializeObject()

TYPO3\CMS\Extbase\Object\Container\Container::initializeObject (   $instance,
\TYPO3\CMS\Extbase\Object\Container\ClassInfo  $classInfo 
)
protected

Call object initializer if present in object

Parameters
object$instance
\TYPO3\CMS\Extbase\Object\Container\ClassInfo$classInfo

Definition at line 254 of file Container.php.

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

◆ injectDependencies()

TYPO3\CMS\Extbase\Object\Container\Container::injectDependencies (   $instance,
\TYPO3\CMS\Extbase\Object\Container\ClassInfo  $classInfo 
)
protected

◆ instanciateObject()

TYPO3\CMS\Extbase\Object\Container\Container::instanciateObject ( \TYPO3\CMS\Extbase\Object\Container\ClassInfo  $classInfo,
array  $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
\TYPO3\CMS\Extbase\Object\Container\ClassInfo$classInfo
array$givenConstructorArguments
Exceptions

Definition at line 200 of file Container.php.

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

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

◆ isPrototype()

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

Definition at line 368 of file Container.php.

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

◆ isSingleton()

TYPO3\CMS\Extbase\Object\Container\Container::isSingleton (   $className)

◆ log()

TYPO3\CMS\Extbase\Object\Container\Container::log (   $message,
  $severity 
)
protected

Wrapper for dev log, in order to ease testing

Parameters
string$messageMessage (in english).
int$severitySeverity: 0 is info, 1 is notice, 2 is warning, 3 is fatal error, -1 is "OK" message

Definition at line 267 of file Container.php.

References TYPO3\CMS\Core\Utility\GeneralUtility\devLog().

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

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

Member Data Documentation

◆ $alternativeImplementation

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

Definition at line 38 of file Container.php.

◆ $cache

TYPO3\CMS\Extbase\Object\Container\Container::$cache = null
private

◆ $classInfoFactory

TYPO3\CMS\Extbase\Object\Container\Container::$classInfoFactory = null
private

◆ $instantiator

TYPO3\CMS\Extbase\Object\Container\Container::$instantiator = null
protected

◆ $prototypeObjectsWhichAreCurrentlyInstanciated

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

Definition at line 64 of file Container.php.

◆ $singletonInstances

TYPO3\CMS\Extbase\Object\Container\Container::$singletonInstances = []
private

Definition at line 57 of file Container.php.

◆ SCOPE_PROTOTYPE

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

◆ SCOPE_SINGLETON

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

Definition at line 23 of file Container.php.

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