[TASK] Protect internal properties of PageRepository 18/52918/13
authorElmar Hinz <t3elmar@gmail.com>
Tue, 23 May 2017 14:50:58 +0000 (16:50 +0200)
committerBenni Mack <benni@typo3.org>
Thu, 7 Dec 2017 15:46:46 +0000 (16:46 +0100)
Mark the public properties as protected and deprecate them within
PageRepository:

- workspaceCache
- error_getRootLine
- error_getRootLine_failPid

Change-Id: I4ed101794dcfc7fa054d42d9e58ad8b5718bcc5d
Releases: master
Resolves: #81318
Reviewed-on: https://review.typo3.org/52918
Reviewed-by: Susanne Moog <susanne.moog@typo3.org>
Tested-by: Susanne Moog <susanne.moog@typo3.org>
Tested-by: TYPO3com <no-reply@typo3.com>
Reviewed-by: Benni Mack <benni@typo3.org>
Tested-by: Benni Mack <benni@typo3.org>
typo3/sysext/core/Documentation/Changelog/master/Deprecation-81318-PublicPropertiesOfPageRepository.rst [new file with mode: 0644]
typo3/sysext/frontend/Classes/Page/PageRepository.php
typo3/sysext/install/Configuration/ExtensionScanner/Php/PropertyPublicMatcher.php

diff --git a/typo3/sysext/core/Documentation/Changelog/master/Deprecation-81318-PublicPropertiesOfPageRepository.rst b/typo3/sysext/core/Documentation/Changelog/master/Deprecation-81318-PublicPropertiesOfPageRepository.rst
new file mode 100644 (file)
index 0000000..c911a13
--- /dev/null
@@ -0,0 +1,39 @@
+.. include:: ../../Includes.txt
+
+=========================================================
+Deprecation: #81318 - Public properties of PageRepository
+=========================================================
+
+See :issue:`81318`
+
+Description
+===========
+
+The following properties within the PageRepository PHP class have been marked as deprecated, as they
+were moved from public access to protected access:
+
+* workspaceCache
+* error_getRootLine
+* error_getRootLine_failPid
+
+They should only be accessed from within the PHP class itself.
+
+
+Impact
+======
+
+Accessing any of the properties directly within PHP will trigger a deprecation warning.
+
+
+Affected Installations
+======================
+
+Extensions accessing one of the previously public properties directly.
+
+
+Migration
+=========
+
+Remove the PHP calls and either extend the PHP class to your own needs or avoid accessing these properties.
+
+.. index:: PHP-API, FullyScanned
\ No newline at end of file
index 269de78..56a8cb1 100644 (file)
@@ -16,6 +16,7 @@ namespace TYPO3\CMS\Frontend\Page;
 
 use Psr\Log\LoggerAwareInterface;
 use Psr\Log\LoggerAwareTrait;
+use TYPO3\CMS\Core\Compatibility\PublicPropertyDeprecationTrait;
 use TYPO3\CMS\Core\Database\Connection;
 use TYPO3\CMS\Core\Database\ConnectionPool;
 use TYPO3\CMS\Core\Database\Query\QueryHelper;
@@ -41,6 +42,17 @@ use TYPO3\CMS\Core\Versioning\VersionState;
 class PageRepository implements LoggerAwareInterface
 {
     use LoggerAwareTrait;
+    use PublicPropertyDeprecationTrait;
+
+    /**
+     * List of all deprecated public properties
+     * @var array
+     */
+    protected $deprecatedPublicProperties = [
+        'workspaceCache' => 'Using $workspaceCache from the outside is discouraged, as this only reflects a local runtime cache.',
+        'error_getRootLine' => 'Using $error_getRootLine from the outside is deprecated as this property only exists for legacy reasons.',
+        'error_getRootLine_failPid' => 'Using $error_getRootLine_failPid from the outside is deprecated as this property only exists for legacy reasons.',
+    ];
 
     /**
      * This is not the final clauses. There will normally be conditions for the
@@ -82,21 +94,21 @@ class PageRepository implements LoggerAwareInterface
     /**
      * @var array
      */
-    public $workspaceCache = [];
+    protected $workspaceCache = [];
 
     /**
      * Error string set by getRootLine()
      *
      * @var string
      */
-    public $error_getRootLine = '';
+    protected $error_getRootLine = '';
 
     /**
      * Error uid set by getRootLine()
      *
      * @var int
      */
-    public $error_getRootLine_failPid = 0;
+    protected $error_getRootLine_failPid = 0;
 
     /**
      * @var array
index 7081430..3909923 100644 (file)
@@ -221,4 +221,19 @@ return [
     ],
 
     // Deprecated public properties
+    'TYPO3\CMS\Frontend\Page\PageRepository->workspaceCache' => [
+        'restFiles' => [
+            'Deprecation-81318-PublicPropertiesOfPageRepository.rst',
+        ],
+    ],
+    'TYPO3\CMS\Frontend\Page\PageRepository->error_getRootLine' => [
+        'restFiles' => [
+            'Deprecation-81318-PublicPropertiesOfPageRepository.rst',
+        ],
+    ],
+    'TYPO3\CMS\Frontend\Page\PageRepository->error_getRootLine_failPid' => [
+        'restFiles' => [
+            'Deprecation-81318-PublicPropertiesOfPageRepository.rst',
+        ],
+    ],
 ];