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);
54 $reflectionMethod = $reflectedClass->getConstructor();
55 if (!is_object($reflectionMethod)) {
59 foreach ($reflectionMethod->getParameters() as $reflectionParameter) {
62 $info[
'name'] = $reflectionParameter->getName();
63 if ($reflectionParameter->getClass()) {
64 $info[
'dependency'] = $reflectionParameter->getClass()->getName();
68 $info[
'defaultValue'] = $reflectionParameter->getDefaultValue();
69 }
catch (\ReflectionException $e) {}
85 $reflectionMethods = $reflectedClass->getMethods();
86 if (is_array($reflectionMethods)) {
87 foreach ($reflectionMethods as $reflectionMethod) {
88 if ($reflectionMethod->isPublic() && $this->
isNameOfInjectMethod($reflectionMethod->getName())) {
89 $reflectionParameter = $reflectionMethod->getParameters();
90 if (isset($reflectionParameter[0])) {
91 if (!$reflectionParameter[0]->getClass()) {
92 throw new \Exception(
'Method "' . $reflectionMethod->getName() .
'" of class "' . $reflectedClass->getName() .
'" is marked as setter for Dependency Injection, but does not have a type annotation');
94 $result[$reflectionMethod->getName()] = $reflectionParameter[0]->getClass()->getName();
110 $reflectionProperties = $reflectedClass->getProperties();
111 if (is_array($reflectionProperties)) {
112 foreach ($reflectionProperties as $reflectionProperty) {
114 if ($reflectedProperty->isTaggedWith(
'inject') && $reflectedProperty->getName() !==
'settings') {
115 $varValues = $reflectedProperty->getTagValues(
'var');
116 if (count($varValues) == 1) {
117 $result[$reflectedProperty->getName()] = ltrim($varValues[0],
'\\');
133 substr($methodName, 0, 6) ===
'inject' 134 && $methodName[6] === strtoupper($methodName[6])
135 && $methodName !==
'injectSettings' 149 return in_array(
'TYPO3\\CMS\\Core\\SingletonInterface', class_implements($classname));
160 return method_exists($classname,
'initializeObject');
isNameOfInjectMethod($methodName)
static makeInstance($className)
buildClassInfoFromClassName($className)
getConstructorArguments(\ReflectionClass $reflectedClass)
getIsInitializeable($classname)
getInjectMethods(\ReflectionClass $reflectedClass)
getIsSingleton($classname)
if($list_of_literals) if(!empty($literals)) if(!empty($literals)) $result
Analyse literals to prepend the N char to them if their contents aren't numeric.
getInjectProperties(\ReflectionClass $reflectedClass)