[TASK] Deprecate AbstractService
authorChristian Kuhn <lolli@schwarzbu.ch>
Fri, 11 Jun 2021 12:52:39 +0000 (14:52 +0200)
committerAndreas Fernandez <a.fernandez@scripting-base.de>
Fri, 11 Jun 2021 14:22:44 +0000 (16:22 +0200)
Class TYPO3\CMS\Core\Service\AbstractService as part of
an ancient 'services' API has been rendered unused in
core with #88646. To further streamline the authentication
API and related helper methods, this class is marked
deprecated now.

This shouldn't have much impact for extensions in the
wild, since the API never found many usages apart from
core authentication related concerns.

Resolves: #94313
Related: #88646
Releases: master
Change-Id: I79e303937320f28667814644964acc4aeebd091e
Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/69461
Tested-by: Oliver Bartsch <bo@cedev.de>
Tested-by: core-ci <typo3@b13.com>
Tested-by: Andreas Fernandez <a.fernandez@scripting-base.de>
Reviewed-by: Oliver Bartsch <bo@cedev.de>
Reviewed-by: Andreas Fernandez <a.fernandez@scripting-base.de>
typo3/sysext/core/Classes/Service/AbstractService.php
typo3/sysext/core/Documentation/Changelog/master/Deprecation-94313-ClassAbstractService.rst [new file with mode: 0644]
typo3/sysext/install/Configuration/ExtensionScanner/Php/ClassNameMatcher.php

index 27c0958..09b85a6 100644 (file)
@@ -25,6 +25,8 @@ use TYPO3\CMS\Core\Utility\GeneralUtility;
 
 /**
  * Parent class for "Services" classes
 
 /**
  * Parent class for "Services" classes
+ *
+ * @deprecated since v11, will be removed in v12.
  */
 abstract class AbstractService implements LoggerAwareInterface
 {
  */
 abstract class AbstractService implements LoggerAwareInterface
 {
diff --git a/typo3/sysext/core/Documentation/Changelog/master/Deprecation-94313-ClassAbstractService.rst b/typo3/sysext/core/Documentation/Changelog/master/Deprecation-94313-ClassAbstractService.rst
new file mode 100644 (file)
index 0000000..5846466
--- /dev/null
@@ -0,0 +1,53 @@
+.. include:: ../../Includes.txt
+
+===========================================
+Deprecation: #94313 - AbstractService class
+===========================================
+
+See :issue:`94313`
+
+Description
+===========
+
+The :php:`TYPO3\CMS\Core\Service\AbstractService` class is part of the ancient
+`Service API <https://docs.tyexpectpo3.org/m/typo3/reference-coreapi/master/en-us/ApiOverview/Services/Developer/ServiceApi.html>`__.
+This API did not really prevail, except it's usage for the authentication process.
+
+Since the authentication service related functionality was already
+decoupled over the last years, the :php:`AbstractService` got finally
+unused in Core since :issue:`88646`. Therefore it has now been marked
+as deprecated.
+
+Impact
+======
+
+Extending this class does *not* raise a deprecation error level log entry.
+The class contains only a `@deprecated` class annotation. Extension classes
+can still extend this class in v11 without impact, it will raise a PHP fatal
+error in v12, when the class is dropped.
+
+
+Affected Installations
+======================
+
+As mentioned, the Service API never found many usages in casual extensions.
+It is therefore pretty unlikely that well maintained projects are affected.
+The extension scanner will find any class usages as a strong match.
+
+Migration
+=========
+
+Remove any usage of this class in your extension. In case you currently
+extend :php:`AbstractService` for use in an authentication service, which
+might be the most common scenario, you have to change your service class
+to extend from :php:`AbstractAuthenticationService` instead.
+
+In case you currently extend :php:`AbstractService` for another kind of
+service, which is rather unlikely, you have to implement the necessary
+methods in your service class yourself. Please see `Service Implementation
+<https://docs.typo3.org/m/typo3/reference-coreapi/master/en-us/ApiOverview/Services/Developer/ServiceApi.html#service-implementation>`__
+for more details about the required methods. However, even better would be to
+completely migrate away from the Service API (look for :php:`GeneralUtility::makeInstanceService()`),
+since the core will deprecate these related methods as well.
+
+.. index:: PHP-API, FullyScanned, ext:core
index a38ec47..9a95fd5 100644 (file)
@@ -1659,4 +1659,9 @@ return [
             'Deprecation-94231-DeprecateExtbaseInvalidRequestMethodException.rst'
         ],
     ],
             'Deprecation-94231-DeprecateExtbaseInvalidRequestMethodException.rst'
         ],
     ],
+    'TYPO3\CMS\Core\Service\AbstractService' => [
+        'restFiles' => [
+            'Deprecation-94313-ClassAbstractService.rst'
+       ],
+    ],
 ];
 ];