TYPO3 CMS  TYPO3_6-2
TYPO3\CMS\Extbase\Object\Container\Container Class Reference
Inheritance diagram for TYPO3\CMS\Extbase\Object\Container\Container:
TYPO3\CMS\Core\SingletonInterface Tx_Extbase_Object_Container_Container

Public Member Functions

 __construct ()
 
 getInstance ($className, $givenConstructorArguments=array())
 
 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=array())
 
 instanciateObject (\TYPO3\CMS\Extbase\Object\Container\ClassInfo $classInfo, array $givenConstructorArguments)
 
 injectDependencies ($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 = array()
 
 $prototypeObjectsWhichAreCurrentlyInstanciated
 

Detailed Description

This file is part of the TYPO3 CMS project.

It is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License, either version 2 of the License, or any later version.

For the full copyright and license information, please read the LICENSE.txt file that was distributed with this source code.

The TYPO3 project - inspiring people to share! Internal TYPO3 Dependency Injection container

Author
Daniel Pötzinger
Sebastian Kurfürst
Timo Schmidt

Definition at line 24 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 76 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 96 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 84 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 286 of file Container.php.

References $parameters, 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 317 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 = array() 
)

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()

TYPO3\CMS\Extbase\Object\Container\Container::getInstanceInternal (   $className,
  $givenConstructorArguments = array() 
)
protected

◆ getInstantiator()

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

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

Returns

Definition at line 108 of file Container.php.

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

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

◆ injectDependencies()

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

Inject setter-dependencies into $instance

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

Definition at line 227 of file Container.php.

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

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

◆ 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 205 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
boolean

Definition at line 357 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).
integer$severitySeverity: 0 is info, 1 is notice, 2 is warning, 3 is fatal error, -1 is "OK" message
Returns
void

Definition at line 262 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 a interface

Parameters
string$className
string$alternativeClassName

Definition at line 273 of file Container.php.

Member Data Documentation

◆ $alternativeImplementation

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

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

◆ $singletonInstances

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

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

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