magento / magento-coding-standard

Magento Coding Standard
Open Software License 3.0
341 stars 153 forks source link

PHP 8.3 error mentioning php 8.1 as version #484

Open MaximGns opened 1 month ago

MaximGns commented 1 month ago

Preconditions

1.magento/product-enterprise-edition: "2.4.7-p1"

  1. magento/magento-coding-standard: "33"
  2. Previous coding standard version --> 31
PHP 8.3.9 (cli) (built: Jul  2 2024 14:10:14) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.3.9, Copyright (c) Zend Technologies
    with Zend OPcache v8.3.9, Copyright (c), by Zend Technologies
FILE: ...ta/******.php
--------------------------------------------------------------------------------
FOUND 1 ERROR AFFECTING 1 LINE
--------------------------------------------------------------------------------
 9 | ERROR | Readonly classes are not supported in PHP 8.1 or earlier.
   |       | (PHPCompatibility.Classes.NewReadonlyClasses.Found)
--------------------------------------------------------------------------------
m2-assistant[bot] commented 1 month ago

Hi @MaximGns. Thank you for your report. To speed up processing of this issue, make sure that you provided sufficient information. Add a comment to assign the issue: @magento I am working on this


Join Magento Community Engineering Slack and ask your questions in #github channel.

fredden commented 1 month ago

This comes from the configuration for PHPCompatibility found in the ruleset for Magento2.

https://github.com/magento/magento-coding-standard/blob/v33/Magento2/ruleset.xml#L770 https://github.com/PHPCompatibility/PHPCompatibility/?tab=readme-ov-file#testversion-in-the-ruleset-versus-command-line

MaximGns commented 1 month ago

@fredden How to resolve this issue when using GrumPHP?

fredden commented 1 month ago

@MaximGns There are instructions on the PHPCompatibility repository for how to set testVersion via command line and/or in a custom ruleset. I've not tested with two custom rulesets both setting the value to see what comes out. You should be able to run phpcs --standard=Magento2 --runtime-set testVersion 8.3 ... to tell PHPCompatibility that you want to validate your code against PHP version 8.3 instead of the version(s) listed within the Magento2 ruleset.

MaximGns commented 1 month ago

@fredden thanks for explenation, but why not support 8.3 out of the box as magento itself also supports? why only php 8.1/8.2...