Task #83966

Epic #83968: PSR-11 Initiative

Consolidate singleton usage

Added by Benjamin Franzke over 1 year ago. Updated 12 months ago.

Status:
Closed
Priority:
Should have
Assignee:
-
Category:
System/Bootstrap/Configuration
Target version:
Start date:
2018-02-19
Due date:
% Done:

100%

TYPO3 Version:
9
PHP Version:
Tags:
Complexity:
Sprint Focus:

Description

There is Bootstrap::getInstance()->getEarlyInstance() and
GeneralUtility::makeInstance() to retrieve (global) instances.
Sometimes the former, sometimes the latter is used (e.g. to
retrieve the PackageManager).
As there is no obvious reason why diffrent methods are used, this
should be unified to one way to retrieve singletons.

Furthermore classes should not know whether something is an
early instance or not. Implementation details like that
should be abstracted into a singleton container.
That (currently) is GeneralUtility::makeInstance().

Associated revisions

Revision 49aee1ae (diff)
Added by Benjamin Franzke over 1 year ago

[TASK] Consolidate singleton retrieval

There is Bootstrap::getInstance()->getEarlyInstance() and
GeneralUtility::makeInstance() to retrieve (global) early instances.
Sometimes the former, sometimes the latter is used (e.g. to
retrieve the PackageManager).

Classes should not know whether something is an early
instance or not. Implementation details like that should be
abstracted into a singleton container. That (currently) is
GeneralUtility::makeInstance().

As there is no obvious reason why different methods are used,
we now use GenerallyUtility::makeInstance() to retrieve singletons.

Add all early singleton instances to the GeneralUtility singleton array
and stop using Bootstrap::getEarlyInstance in classes outside Bootstrap.

One exception to this is the composer ClassLoader. That (obviously)
does not implement the TYPO3 SingletonInterface.
We now push that instance to ClassLoadingInformation during the
bootstrap. (similar to how the PackageManager is pushed to the
ExtensionManagementUtility).

Releases: master
Resolves: #83966
Change-Id: Icf3bef5f51a6142d9d1dcdc9b3700a86d7bb7f78
Reviewed-on: https://review.typo3.org/55802
Tested-by: TYPO3com <>
Reviewed-by: Frank Naegler <>
Tested-by: Frank Naegler <>
Reviewed-by: Benni Mack <>
Tested-by: Benni Mack <>

History

#1 Updated by Gerrit Code Review over 1 year ago

  • Status changed from New to Under Review

Patch set 1 for branch master of project Packages/TYPO3.CMS has been pushed to the review server.
It is available at https://review.typo3.org/55802

#2 Updated by Gerrit Code Review over 1 year ago

Patch set 2 for branch master of project Packages/TYPO3.CMS has been pushed to the review server.
It is available at https://review.typo3.org/55802

#3 Updated by Gerrit Code Review over 1 year ago

Patch set 3 for branch master of project Packages/TYPO3.CMS has been pushed to the review server.
It is available at https://review.typo3.org/55802

#4 Updated by Gerrit Code Review over 1 year ago

Patch set 4 for branch master of project Packages/TYPO3.CMS has been pushed to the review server.
It is available at https://review.typo3.org/55802

#5 Updated by Gerrit Code Review over 1 year ago

Patch set 5 for branch master of project Packages/TYPO3.CMS has been pushed to the review server.
It is available at https://review.typo3.org/55802

#6 Updated by Frank Naegler over 1 year ago

  • Parent task set to #83968

#7 Updated by Gerrit Code Review over 1 year ago

Patch set 6 for branch master of project Packages/TYPO3.CMS has been pushed to the review server.
It is available at https://review.typo3.org/55802

#8 Updated by Benjamin Franzke over 1 year ago

  • Status changed from Under Review to Resolved
  • % Done changed from 0 to 100

#9 Updated by Benni Mack 12 months ago

  • Status changed from Resolved to Closed

Also available in: Atom PDF