[TASK] Sync objectmananger get and create with Flow
authorMarc Bastian Heinrichs <typo3@mbh-software.de>
Sat, 9 Feb 2013 23:25:30 +0000 (00:25 +0100)
committerMarc Bastian Heinrichs <typo3@mbh-software.de>
Sat, 9 Feb 2013 23:27:15 +0000 (00:27 +0100)
ObjectManager::create was deprecated since Flow beta1 and was
removed for Flow 1.0. To be in sync again deprecate Extbase
ObjectManager::create and use ObjectManager::get.

Change-Id: I5b92bae39ec63fdd985797ff03cb688ea6ff96d3
Resolves: #45322
Releases: 6.1
Reviewed-on: https://review.typo3.org/18162
Reviewed-by: Christian Kuhn
Tested-by: Christian Kuhn
Reviewed-by: Marc Bastian Heinrichs
Tested-by: Marc Bastian Heinrichs
typo3/sysext/extbase/Classes/Object/ObjectManager.php
typo3/sysext/extbase/Classes/Object/ObjectManagerInterface.php

index f025264..cdeee1c 100644 (file)
@@ -91,12 +91,6 @@ class ObjectManager implements ObjectManagerInterface {
        /**
         * Returns a fresh or existing instance of the object specified by $objectName.
         *
-        * Important:
-        *
-        * If possible, instances of Prototype objects should always be created with the
-        * Object Manager's create() method and Singleton objects should rather be
-        * injected by some type of Dependency Injection.
-        *
         * @param string $objectName The name of the object to return an instance of
         * @return object The object instance
         * @api
@@ -104,7 +98,13 @@ class ObjectManager implements ObjectManagerInterface {
        public function get($objectName) {
                $arguments = func_get_args();
                array_shift($arguments);
-               return $this->objectContainer->getInstance($objectName, $arguments);
+               if ($objectName === 'DateTime') {
+                       array_unshift($arguments, $objectName);
+                       $instance = call_user_func_array(array('TYPO3\\CMS\\Core\\Utility\\GeneralUtility', 'makeInstance'), $arguments);
+               } else {
+                       $instance = $this->objectContainer->getInstance($objectName, $arguments);
+               }
+               return $instance;
        }
 
        /**
@@ -117,21 +117,12 @@ class ObjectManager implements ObjectManagerInterface {
         *
         * @param string $objectName The name of the object to create
         * @return object The new object instance
-        * @throws \TYPO3\CMS\Extbase\Object\Exception\WrongScopeException if the created object is not of scope prototype
-        * @api
+        * @deprecated since Extbase 6.1.0; will be removed in Extbase 6.3.0
         */
        public function create($objectName) {
+               \TYPO3\CMS\Core\Utility\GeneralUtility::logDeprecatedFunction();
                $arguments = func_get_args();
-               array_shift($arguments);
-               if ($objectName === 'DateTime') {
-                       array_unshift($arguments, $objectName);
-                       $instance = call_user_func_array(array('TYPO3\\CMS\\Core\\Utility\\GeneralUtility', 'makeInstance'), $arguments);
-               } else {
-                       $instance = $this->objectContainer->getInstance($objectName, $arguments);
-               }
-               if ($instance instanceof \TYPO3\CMS\Core\SingletonInterface) {
-                       throw new \TYPO3\CMS\Extbase\Object\Exception\WrongScopeException('Object "' . $objectName . '" is of not of scope prototype, but only prototype is supported by create()', 1265203124);
-               }
+               $instance = call_user_func_array(array($this, 'get'), $arguments);
                return $instance;
        }
 
index 674d3c1..e9206a2 100644 (file)
@@ -43,12 +43,6 @@ interface ObjectManagerInterface extends \TYPO3\CMS\Core\SingletonInterface {
        /**
         * Returns a fresh or existing instance of the object specified by $objectName.
         *
-        * Important:
-        *
-        * If possible, instances of Prototype objects should always be created with the
-        * Object Manager's create() method and Singleton objects should rather be
-        * injected by some type of Dependency Injection.
-        *
         * @param string $objectName The name of the object to return an instance of
         * @return object The object instance
         * @api
@@ -65,8 +59,7 @@ interface ObjectManagerInterface extends \TYPO3\CMS\Core\SingletonInterface {
         *
         * @param string $objectName The name of the object to create
         * @return object The new object instance
-        * @throws \TYPO3\CMS\Extbase\Object\Exception\WrongScopeException if the created object is not of scope prototype
-        * @api
+        * @deprecated since 6.1
         */
        public function create($objectName);