Project

General

Profile

Actions

Bug #59868

closed

EM does not properly resolve dependencies

Added by Xavier Perseguers over 10 years ago. Updated almost 10 years ago.

Status:
Closed
Priority:
Should have
Assignee:
-
Category:
-
Target version:
-
Start date:
2014-06-25
Due date:
% Done:

0%

Estimated time:
TYPO3 Version:
6.2
PHP Version:
Tags:
Complexity:
Is Regression:
No
Sprint Focus:

Description

How to reproduce:

  • Manually download EXT:yag
  • Ensure you don't have the dependencies locally
  • Activate EXT:yag

Class Tx_PtExtbase_Utility_FeBeModeDetector does not exist

15 ReflectionParameter::getClass()

/path/to/typo3/sysext/extbase/Classes/Object/Container/ClassInfoFactory.php:
00089:      $reflectionParameter = $reflectionMethod->getParameters();
00090:      if (isset($reflectionParameter[0])) {
00091:       if (!$reflectionParameter[0]->getClass()) {
00092:        throw new \Exception('Method "' . $reflectionMethod->getName() . '" of class "' . $reflectedClass->getName() . '" is marked as setter for Dependency Injection, but does not have a type annotation');
00093:       }

14 TYPO3\CMS\Extbase\Object\Container\ClassInfoFactory::getInjectMethods(ReflectionClass)

/path/to/typo3/sysext/extbase/Classes/Object/Container/ClassInfoFactory.php:
00038:   }
00039:   $constructorArguments = $this->getConstructorArguments($reflectedClass);
00040:   $injectMethods = $this->getInjectMethods($reflectedClass);
00041:   $injectProperties = $this->getInjectProperties($reflectedClass);
00042:   $isSingleton = $this->getIsSingleton($className);

13 TYPO3\CMS\Extbase\Object\Container\ClassInfoFactory::buildClassInfoFromClassName("Tx_Yag_Utility_PidDetector")

/path/to/typo3/sysext/extbase/Classes/Object/Container/Container.php:
00309:   $classInfo = $this->getClassInfoCache()->get($classNameHash);
00310:   if (!$classInfo instanceof \TYPO3\CMS\Extbase\Object\Container\ClassInfo) {
00311:    $classInfo = $this->getClassInfoFactory()->buildClassInfoFromClassName($className);
00312:    $this->getClassInfoCache()->set($classNameHash, $classInfo);
00313:   }

12 TYPO3\CMS\Extbase\Object\Container\Container::getClassInfo("Tx_Yag_Utility_PidDetector")

/path/to/typo3/sysext/extbase/Classes/Object/Container/Container.php:
00151:    return $this->singletonInstances[$className];
00152:   }
00153:   $classInfo = $this->getClassInfo($className);
00154:   $classIsSingleton = $classInfo->getIsSingleton();
00155:   if (!$classIsSingleton) {

11 TYPO3\CMS\Extbase\Object\Container\Container::getInstanceInternal("Tx_Yag_Utility_PidDetector")

/path/to/typo3/sysext/extbase/Classes/Object/Container/Container.php:
00207:   }
00208:   foreach ($classInfo->getInjectMethods() as $injectMethodName => $classNameToInject) {
00209:    $instanceToInject = $this->getInstanceInternal($classNameToInject);
00210:    if ($classInfo->getIsSingleton() && !$instanceToInject instanceof \TYPO3\CMS\Core\SingletonInterface) {
00211:     $this->log('The singleton "' . $classInfo->getClassName() . '" needs a prototype in "' . $injectMethodName . '". This is often a bad code smell; often you rather want to inject a singleton.', 1);

10 TYPO3\CMS\Extbase\Object\Container\Container::injectDependencies(Tx_Yag_Extbase_Persistence_Backend, TYPO3\CMS\Extbase\Object\Container\ClassInfo)
Actions

Also available in: Atom PDF