Semanticmediawiki: PHP 7.4 deprecation warnings

Created on 18 Sep 2019  路  7Comments  路  Source: SemanticMediaWiki/SemanticMediaWiki

Setup and configuration

  • SMW version: 3.1.0-rc.1, git: 5c4837e,
  • MW version: 1.34.0-alpha, git: 7612ebe,
  • PHP version: 7.4.0RC1
  • DB system (MySQL, Blazegraph, etc.) and version: MySQL 5.7.27

Issue

The first PHP 7.4 release candidate is out. This new version of PHP brings several new deprecations that affect Semantic MediaWiki, including the deprecation of accessing array offsets via curly brackets[1][2] and unparenthesized nested ternary operators[3]. Semantic MediaWiki is using some of these deprecated features, which cause deprecation warnings.


[1] https://github.com/php/php-src/blob/PHP-7.4/UPGRADING#L362
[2] https://wiki.php.net/rfc/deprecate_curly_braces_array_access
[3] https://github.com/php/php-src/blob/PHP-7.4/UPGRADING#L350

Stack trace

Executing the Semantic MediaWiki PHPUnit test suite results in various warnings, examples follow:

Deprecated: Unparenthesized `a ? b : c ? d : e` is deprecated. Use either `(a ? b : c) ? d : e` or `a ? b : (c ? d : e)` in /usr/src/myapp/extensions/SemanticMediaWiki/tests/phpunit/Utils/JSONScript/JsonTestCaseFileHandler.php on line 380

Call Stack:
    0.0015     407504   1. {main}() /usr/src/myapp/tests/phpunit/phpunit.php:0
    0.0238     671968   2. require('/usr/src/myapp/maintenance/doMaintenance.php') /usr/src/myapp/tests/phpunit/phpunit.php:136
    1.0265   15686736   3. PHPUnitMaintClass->execute() /usr/src/myapp/maintenance/doMaintenance.php:99
    1.0579   16402872   4. MediaWikiPHPUnitCommand->run() /usr/src/myapp/tests/phpunit/phpunit.php:97
    1.0579   16402872   5. MediaWikiPHPUnitCommand->handleArguments() /usr/src/myapp/extensions/SemanticMediaWiki/vendor/phpunit/phpunit/src/TextUI/Command.php:159
    1.1184   16861472   6. MediaWikiPHPUnitCommand->handleBootstrap() /usr/src/myapp/extensions/SemanticMediaWiki/vendor/phpunit/phpunit/src/TextUI/Command.php:788
    1.1226   16866544   7. PHPUnit\Util\Fileloader::checkAndLoad() /usr/src/myapp/extensions/SemanticMediaWiki/vendor/phpunit/phpunit/src/TextUI/Command.php:991
    1.1248   16866832   8. PHPUnit\Util\Fileloader::load() /usr/src/myapp/extensions/SemanticMediaWiki/vendor/phpunit/phpunit/src/Util/Fileloader.php:48
    1.1263   16875408   9. include_once('/usr/src/myapp/extensions/SemanticMediaWiki/tests/bootstrap.php') /usr/src/myapp/extensions/SemanticMediaWiki/vendor/phpunit/phpunit/src/Util/Fileloader.php:64
    1.1283   16889840  10. require('/usr/src/myapp/extensions/SemanticMediaWiki/tests/autoloader.php') /usr/src/myapp/extensions/SemanticMediaWiki/tests/bootstrap.php:15
    1.2602   18745376  11. class_alias() /usr/src/myapp/extensions/SemanticMediaWiki/tests/autoloader.php:76
    1.2602   18745536  12. spl_autoload_call() /usr/src/myapp/extensions/SemanticMediaWiki/tests/autoloader.php:76
    1.2603   18745616  13. Composer\Autoload\ClassLoader->loadClass() /usr/src/myapp/extensions/SemanticMediaWiki/tests/autoloader.php:76
    1.2638   18745744  14. Composer\Autoload\includeFile() /usr/src/myapp/vendor/composer/ClassLoader.php:322
Deprecated: Array and string offset access syntax with curly braces is deprecated in /usr/src/myapp/extensions/SemanticMediaWiki/includes/datavalues/SMW_DV_Time.php on line 423

Call Stack:
    0.0015     407504   1. {main}() /usr/src/myapp/tests/phpunit/phpunit.php:0
    0.0238     671968   2. require('/usr/src/myapp/maintenance/doMaintenance.php') /usr/src/myapp/tests/phpunit/phpunit.php:136
    1.0265   15686736   3. PHPUnitMaintClass->execute() /usr/src/myapp/maintenance/doMaintenance.php:99
    1.0579   16402872   4. MediaWikiPHPUnitCommand->run() /usr/src/myapp/tests/phpunit/phpunit.php:97
    1.0579   16402872   5. MediaWikiPHPUnitCommand->handleArguments() /usr/src/myapp/extensions/SemanticMediaWiki/vendor/phpunit/phpunit/src/TextUI/Command.php:159
    1.2818   19023888   6. PHPUnit\Util\Configuration->getTestSuiteConfiguration() /usr/src/myapp/extensions/SemanticMediaWiki/vendor/phpunit/phpunit/src/TextUI/Command.php:837
    1.2819   19045728   7. PHPUnit\Util\Configuration->getTestSuite() /usr/src/myapp/extensions/SemanticMediaWiki/vendor/phpunit/phpunit/src/Util/Configuration.php:913
    1.3625   19102808   8. PHPUnit\Framework\TestSuite->addTestFiles() /usr/src/myapp/extensions/SemanticMediaWiki/vendor/phpunit/phpunit/src/Util/Configuration.php:1009
    1.9911   25564992   9. PHPUnit\Framework\TestSuite->addTestFile() /usr/src/myapp/extensions/SemanticMediaWiki/vendor/phpunit/phpunit/src/Framework/TestSuite.php:403
    1.9982   25673880  10. PHPUnit\Framework\TestSuite->addTestSuite() /usr/src/myapp/extensions/SemanticMediaWiki/vendor/phpunit/phpunit/src/Framework/TestSuite.php:377
    1.9982   25674136  11. PHPUnit\Framework\TestSuite->__construct() /usr/src/myapp/extensions/SemanticMediaWiki/vendor/phpunit/phpunit/src/Framework/TestSuite.php:290
    2.0057   25806088  12. PHPUnit\Framework\TestSuite->addTestMethod() /usr/src/myapp/extensions/SemanticMediaWiki/vendor/phpunit/phpunit/src/Framework/TestSuite.php:187
    2.0057   25806464  13. PHPUnit\Framework\TestSuite::createTest() /usr/src/myapp/extensions/SemanticMediaWiki/vendor/phpunit/phpunit/src/Framework/TestSuite.php:882
    2.0059   25808632  14. PHPUnit\Util\Test::getProvidedData() /usr/src/myapp/extensions/SemanticMediaWiki/vendor/phpunit/phpunit/src/Framework/TestSuite.php:481
    2.0059   25808744  15. PHPUnit\Util\Test::getDataFromDataProviderAnnotation() /usr/src/myapp/extensions/SemanticMediaWiki/vendor/phpunit/phpunit/src/Util/Test.php:449
    2.0060   25811456  16. ReflectionMethod->invoke() /usr/src/myapp/extensions/SemanticMediaWiki/vendor/phpunit/phpunit/src/Util/Test.php:521
    2.0060   25811456  17. SMW\Tests\SemanticDataTest->removePropertyObjectProvider() /usr/src/myapp/extensions/SemanticMediaWiki/vendor/phpunit/phpunit/src/Util/Test.php:521
    2.2229   28029512  18. SMW\Tests\SemanticDataTest->newSubobject() /usr/src/myapp/extensions/SemanticMediaWiki/tests/phpunit/includes/SemanticDataTest.php:579
    2.2329   28061432  19. SMW\DataValueFactory::getInstance() /usr/src/myapp/extensions/SemanticMediaWiki/tests/phpunit/includes/SemanticDataTest.php:704
    2.2427   28142032  20. SMW\Services\ServicesFactory->create() /usr/src/myapp/extensions/SemanticMediaWiki/src/DataValueFactory.php:86
    2.2427   28142408  21. Onoi\CallbackContainer\CallbackContainerBuilder->create() /usr/src/myapp/extensions/SemanticMediaWiki/src/Services/ServicesFactory.php:154
    2.2427   28142784  22. Onoi\CallbackContainer\CallbackContainerBuilder->getReturnValueFromCallbackHandlerFor() /usr/src/myapp/extensions/SemanticMediaWiki/vendor/onoi/callback-container/src/CallbackContainerBuilder.php:181
    2.2428   28142816  23. call_user_func_array:{/usr/src/myapp/extensions/SemanticMediaWiki/vendor/onoi/callback-container/src/CallbackContainerBuilder.php:260}() /usr/src/myapp/extensions/SemanticMediaWiki/vendor/onoi/callback-container/src/CallbackContainerBuilder.php:260
    2.2428   28142832  24. SMW\Services\SharedServicesContainer->SMW\Services\{closure:/usr/src/myapp/extensions/SemanticMediaWiki/src/Services/SharedServicesContainer.php:506-518}() /usr/src/myapp/extensions/SemanticMediaWiki/vendor/onoi/callback-container/src/CallbackContainerBuilder.php:260
    2.2459   28159440  25. Onoi\CallbackContainer\CallbackContainerBuilder->registerFromFile() /usr/src/myapp/extensions/SemanticMediaWiki/src/Services/SharedServicesContainer.php:510
    2.2483   28196296  26. require('/usr/src/myapp/extensions/SemanticMediaWiki/src/Services/datavalues.php') /usr/src/myapp/extensions/SemanticMediaWiki/vendor/onoi/callback-container/src/CallbackContainerBuilder.php:79
    2.2702   28490152  27. spl_autoload_call() /usr/src/myapp/extensions/SemanticMediaWiki/src/Services/datavalues.php:342
    2.2702   28490192  28. Composer\Autoload\ClassLoader->loadClass() /usr/src/myapp/extensions/SemanticMediaWiki/src/Services/datavalues.php:342
    2.2702   28490192  29. Composer\Autoload\includeFile() /usr/src/myapp/vendor/composer/ClassLoader.php:322

Steps to reproduce

Execute the Semantic MediaWiki PHPUnit test suite under PHP 7.4.0RC1.

bug

Most helpful comment

Yeah, I just figured it'd probably have to be handled at some point anyways, so a tracking issue couldn't hurt :)

All 7 comments

Thanks for reporting though this will not affect the upcoming SMW 3.1.0 release which will support up to PHP 7.3. Anyways it is good to have this on the radar.

Yeah, I just figured it'd probably have to be handled at some point anyways, so a tracking issue couldn't hurt :)

Step 1: https://github.com/SemanticMediaWiki/SemanticMediaWiki/pull/4298

Funny: last change to that file changed it to PHP 5.4 array syntax.

@mszabo-wikia can you post the full list of warnings?

There are quite a few but I have made 3 PRs to remove the bulk of them (#4295, #4296, #4297). I can try rerunning the tests later today to see what's left.

Thanks a bunch! Merged two of them now.

Just found two cases causing the warning:

Was this page helpful?
0 / 5 - 0 ratings