31 if ($className ===
'DateTime') {
32 return new \TYPO3\CMS\Extbase\Object\Container\ClassInfo($className, array(), array(),
false,
false, array());
35 $reflectedClass = new \ReflectionClass($className);
37 throw new \TYPO3\CMS\Extbase\Object\Container\Exception\UnknownObjectException(
'Could not analyse class:' . $className .
' maybe not loaded or no autoloader?', 1289386765);
44 return new \TYPO3\CMS\Extbase\Object\Container\ClassInfo($className, $constructorArguments, $injectMethods, $isSingleton, $isInitializeable, $injectProperties);
55 $reflectionMethod = $reflectedClass->getConstructor();
56 if (!is_object($reflectionMethod)) {
60 foreach ($reflectionMethod->getParameters() as $reflectionParameter) {
63 $info[
'name'] = $reflectionParameter->getName();
64 if ($reflectionParameter->getClass()) {
65 $info[
'dependency'] = $reflectionParameter->getClass()->getName();
69 $info[
'defaultValue'] = $reflectionParameter->getDefaultValue();
70 }
catch (\ReflectionException $e) {
88 $reflectionMethods = $reflectedClass->getMethods();
89 if (is_array($reflectionMethods)) {
90 foreach ($reflectionMethods as $reflectionMethod) {
91 if ($reflectionMethod->isPublic() && $this->
isNameOfInjectMethod($reflectionMethod->getName())) {
92 $reflectionParameter = $reflectionMethod->getParameters();
93 if (isset($reflectionParameter[0])) {
94 if (!$reflectionParameter[0]->getClass()) {
95 throw new \Exception(
'Method "' . $reflectionMethod->getName() .
'" of class "' . $reflectedClass->getName() .
'" is marked as setter for Dependency Injection, but does not have a type annotation');
97 $result[$reflectionMethod->getName()] = $reflectionParameter[0]->getClass()->getName();
114 $reflectionProperties = $reflectedClass->getProperties();
115 if (is_array($reflectionProperties)) {
116 foreach ($reflectionProperties as $reflectionProperty) {
117 $reflectedProperty = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance(\TYPO3\CMS\Extbase\Reflection\PropertyReflection::class, $reflectedClass->getName(), $reflectionProperty->getName());
118 if ($reflectedProperty->isTaggedWith(
'inject') && $reflectedProperty->getName() !==
'settings') {
119 $varValues = $reflectedProperty->getTagValues(
'var');
120 if (count($varValues) === 1) {
121 $result[$reflectedProperty->getName()] = ltrim($varValues[0],
'\\');
138 substr($methodName, 0, 6) ===
'inject'
139 && $methodName[6] === strtoupper($methodName[6])
140 && $methodName !==
'injectSettings'
155 return in_array(\TYPO3\CMS\Core\SingletonInterface::class, class_implements($classname));
167 return method_exists($classname,
'initializeObject');