Problem/Motivation
Drupal 8.8.x is not passing tests on PHP 7.4. PHP 7.4 released on November 28, 2019, a week before Drupal 8.8.0.
Proposed resolution
Fix code to not trigger errors in PHP 7.4 maintaining the same behaviour as PHP 7.0 to 7.3.
There is no release of easyrdf/easyrdf that supports PHP 7.4 in order to work around this we've done #3090017: Isolate test dependency on easyrdf/easyrdf to a single trait and then in this patch we provide a test only version of \EasyRdf_ParsedUri
that is PHP 7.4 compatible. This code is only loaded and available at test time. Hopefully a release of easyrdf will happen sometime but it's not as important because it is now a test only dependency in Drupal 9.
Follow-up issues
- #3110815: \Drupal\hal\Normalizer\EntityReferenceItemNormalizer::normalize() tries to normalize entities that don't exist
- #3110839: Use of \Drupal\Core\Database\Install\Tasks::getFormOptions() in \Drupal\migrate_drupal_ui\Form\CredentialForm::buildForm() results in confusing description for prefix form element
- #3110972: Update easyrdf library or change \Drupal\Tests\rdf\Traits\RdfParsingTrait to not rely on it
Done:
- #3090145: Ensure that mixing array and Attribute objects in theme rendering is managed properly
- #3104420: PHP 7.4 Deprecated curly brace syntax for accessing array elements
- #3104421: PHP 7.4 deprecated reverse order of glue and pieces in implode
- #3095895: FieldTypePluginManager::getPluginClass() should throw an exception when called for a field type that doesn't exist
- #2830631: Remove code that tries to use _raw_variables for route argument resolution as it does not work
- #3089764: Updating translations does not clear the JS asset cache so new translations are not loaded
- Get a new release of composer/composer including https://github.com/composer/composer/pull/8296, see comment #33. #3075785: Update composer/composer to ^1.9.1
- Update to release 1.6.8 of mikey179/vfsstream, see comment #31. mikey179/vfsstream 2.0.x-dev requires PHP 7.2, so D8.8. cannot upgrade to it. #3091225: Require-dev mikey179/vfsstream ^1.6.8 in order to support PHP 7.4
- Get a new release of symfony/validator, including https://github.com/symfony/symfony/pull/34097:#3092112: Update symfony packages to 3.4.33 before 8.8.x beta
- #3089530: Tests of copied Doctrine code are not testing what we want them to test
- New release of Typo3's phar stream wrapper and of PEAR's Archive Tar #3088853: Require typo3/phar-stream-wrapper ^3.1.3 and pear/archive_tar ^1.4.8 in order to support PHP 7.4
- PHPunit 6 does not run on PHP 7.4 so we need to upgrade it - #2950132: Support PHPUnit 7 optionally in Drupal 8, while keeping support for ^6.5 - unfortunately PHP 7.0 (still supported in 8.8.0) does not run PHPUnit 7.
egulias/email-validator
- access array on null. Solvable updating to latest version. #3039611: Update core PHP dependencies for 8.8.xmikey179/vfsstream
- use of deprecated curly brackets for array access. Solvable updating to latest version.
#3039611: Update core PHP dependencies for 8.8.x
Remaining tasks
User interface changes
None
API changes
None
Data model changes
None
Release notes snippet
Drupal [insert version] is now compatible with PHP 7.4 and testing on PHP 7.4 is part of the regular automated test suite.