Skip to content

Remove E_STRICT error level and deprecate E_STRICT constant #13053

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Sep 18, 2024

Conversation

mvorisek
Copy link
Contributor

@mvorisek mvorisek commented Dec 30, 2023

E_STRICT error level is no longer used in the php-src and is/was already documented in the code [1] as to be removed.

E_STRICT error level has no use since PHP 7.4 [2] with comment in the last PR description:

The constant still exists in the Zend engine which we may want to remove in PHP 8.

[1] https://github.com/php/php-src/blob/php-8.3.0/run-tests.php#L1647
[2] #4401

RFC: https://wiki.php.net/rfc/deprecations_php_8_4#remove_e_strict_error_level_and_deprecate_e_strict_constant

@mvorisek mvorisek marked this pull request as draft December 30, 2023 13:17
@mvorisek mvorisek force-pushed the rm_e_strict branch 2 times, most recently from 283cdfb to c5c27a7 Compare December 30, 2023 17:51
@mvorisek mvorisek marked this pull request as ready for review December 30, 2023 20:13
@staabm
Copy link
Contributor

staabm commented Jan 1, 2024

Does this change yield any value or just create a lot of work to cleanup existing userland code without actual value?

https://github.com/search?q=%22E_STRICT%22+language%3APHP&type=code

@staabm
Copy link
Contributor

staabm commented Jan 1, 2024

Before deleting it here IMO we should check whether static analysis tools would want to emit a error for the constant when used as a first step forward

https://phpstan.org/r/5f512016-9f2a-4387-9486-5330853e11cb

@staabm
Copy link
Contributor

staabm commented Jan 1, 2024

Maybe we can even mark the constant as @deprecated in the stubs. This might already be enough to make phpstan emit error for its usages (I did not check whether thats true).

@mvorisek mvorisek changed the title Remove E_STRICT constant/error level Remove E_STRICT error level Jan 1, 2024
@mvorisek mvorisek changed the title Remove E_STRICT error level Remove unused E_STRICT error level Jan 1, 2024
@mvorisek
Copy link
Contributor Author

mvorisek commented Jan 1, 2024

I updated this PR to be BC friendly, ie. removed all E_STRICT error level related code as the error level is no longer used since PHP 7.4.

I kept the E_STRICT constant /wo even deprecating it. It might be deprecated in separate PR and such PR will probably require a RFC.

@jorgsowa
Copy link
Contributor

jorgsowa commented Jan 1, 2024

Deprecation of the constant may be added to the collective RFC of deprecations: https://wiki.php.net/rfc/deprecations_php_8_4

@Girgias
Copy link
Member

Girgias commented Jan 3, 2024

Adding it to the deprecation RFC makes sense, because in theory someone could use the constant with trigger_error()

@mvorisek
Copy link
Contributor Author

This PR should not require RFC as it does not remove the constatnt. It removes the internal E_STRICT error level that is no longer used.

@TimWolla
Copy link
Member

This PR changes the user-visible value of a built-in constant, which might be considered a breaking change. This PR is probably on the line of needing an RFC and in those cases it's easier to create a succinct RFC than to argue why it would not need one. Especially if at least one contributor feels that it needs one.

@mvorisek
Copy link
Contributor Author

Can you or someone more involved add it to the https://wiki.php.net/rfc/deprecations_php_8_4? Thank you.

@jorgsowa
Copy link
Contributor

I have added to the list. Let me know if something is wrong.

https://wiki.php.net/rfc/deprecations_php_8_4#constant_e_strict

@andypost
Copy link
Contributor

andypost commented Aug 4, 2024

Looks like voting finished!

@iluuu1994
Copy link
Member

It looks like this is missing the actual deprecation of the constant.

@iluuu1994 iluuu1994 self-assigned this Sep 18, 2024
@iluuu1994
Copy link
Member

@mvorisek Ah, I see you just pushed the changes. Good timing 🙂 Thanks!

@iluuu1994 iluuu1994 closed this in d313ad6 Sep 18, 2024
@iluuu1994 iluuu1994 merged commit d313ad6 into php:master Sep 18, 2024
7 of 10 checks passed
@mvorisek mvorisek deleted the rm_e_strict branch September 18, 2024 16:37
reviewtypo3org pushed a commit to TYPO3/typo3 that referenced this pull request Sep 29, 2024
Note that this change addresses three different issues, which
need to be done in one step, otherwise none of isolated patches
would get a +1 CI verification:

* Alignment for changed `$escape` parameter handling of CSV
  related methods, which must be avoided with PHP versions below
  8.4.0-beta5, but is required as of PHP 8.4.0-RC1.
* This `$escape` issue needs to be addressed directly in
  the `typo3/testing-framework` and thus needs a raised
  dependency directly.
* PHP 8.4.0.0-RC1 also deprecated the `E_STRICT` constant,
  which needs to be addressed directly.

With [1] the `$escape` parameter for the following method calls

* `str_getcsv()`
* `fputcsv()`
* `fgetcsv()`

must be provided as a 1 character long value. Omitting and
using the default value will emit a PHP deprecation [2] warning
as of PHP 8.4.0-RC1, for example:

  str_getcsv(): the $escape parameter must be provided
  as its default value will change

To mitigate this, PHP recommends following:

  It must be passed explicitly either positionally or
  via named arguments.

This change adjusts all occurences (function calls) and ensures
that the `$escape` parameter is explicitly provided via
specifying all parameters up to that position and not
using a `named arguments` approach for easier backporting.

The TYPO3 testing framework also needs to be aligned to
mitigate `fgetcsv()` issues, and is raised in the same
step - otherwise none of these changes would get a green
CI pipeline run.

The following testing-framework updates are adjusted:

* main: simple update `main` pointer
* 12.4: Raise to tag `8.2.2`
* 11.5: Raise to tag `6.16.10`

Used command(s):

> composer require --dev "typo3/testing-framework":"^8.2.2"

Additionally, PHP 8.4.0-RC1 deprecated the `E_STRICT`
constant, which now emits a E_DEPRECATED which leads to
failed CI tests. This change introduces a core internal
constant with the same integer value, and replaces usages
with this constant to mitigate the E_DEPRECATION. This constant
can then be dropped with TYPO3 v14, preventing a breaking change
at this time. [3][4]

[1] php/php-src#15569
[2] https://github.com/php/php-src/blob/ebee8df27ed/UPGRADING#L617-L622
[3] https://github.com/php/php-src/blob/ebee8df27edf7/UPGRADING#L47-L49
[4] php/php-src#13053

Resolves: #105155
Releases: main, 12.4, 11.5
Change-Id: Ie8b7d46eeb75ba6e32c0e8f6e7e947775083cc15
Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/86376
Tested-by: core-ci <typo3@b13.com>
Tested-by: Stefan Bürk <stefan@buerk.tech>
Reviewed-by: Garvin Hicking <gh@faktor-e.de>
Reviewed-by: Stefan Bürk <stefan@buerk.tech>
Tested-by: Garvin Hicking <gh@faktor-e.de>
reviewtypo3org pushed a commit to TYPO3/typo3 that referenced this pull request Sep 29, 2024
Note that this change addresses three different issues, which
need to be done in one step, otherwise none of isolated patches
would get a +1 CI verification:

* Alignment for changed `$escape` parameter handling of CSV
  related methods, which must be avoided with PHP versions below
  8.4.0-beta5, but is required as of PHP 8.4.0-RC1.
* This `$escape` issue needs to be addressed directly in
  the `typo3/testing-framework` and thus needs a raised
  dependency directly.
* PHP 8.4.0.0-RC1 also deprecated the `E_STRICT` constant,
  which needs to be addressed directly.

With [1] the `$escape` parameter for the following method calls

* `str_getcsv()`
* `fputcsv()`
* `fgetcsv()`

must be provided as a 1 character long value. Omitting and
using the default value will emit a PHP deprecation [2] warning
as of PHP 8.4.0-RC1, for example:

  str_getcsv(): the $escape parameter must be provided
  as its default value will change

To mitigate this, PHP recommends following:

  It must be passed explicitly either positionally or
  via named arguments.

This change adjusts all occurences (function calls) and ensures
that the `$escape` parameter is explicitly provided via
specifying all parameters up to that position and not
using a `named arguments` approach for easier backporting.

The TYPO3 testing framework also needs to be aligned to
mitigate `fgetcsv()` issues, and is raised in the same
step - otherwise none of these changes would get a green
CI pipeline run.

The following testing-framework updates are adjusted:

* main: simple update `main` pointer
* 12.4: Raise to tag `8.2.2`
* 11.5: Raise to tag `6.16.10`

Used command(s):

> composer update "typo3/testing-framework"

Additionally, PHP 8.4.0-RC1 deprecated the `E_STRICT`
constant, which now emits a E_DEPRECATED which leads to
failed CI tests. This change introduces a core internal
constant with the same integer value, and replaces usages
with this constant to mitigate the E_DEPRECATION. This constant
can then be dropped with TYPO3 v14, preventing a breaking change
at this time. [3][4]

[1] php/php-src#15569
[2] https://github.com/php/php-src/blob/ebee8df27ed/UPGRADING#L617-L622
[3] https://github.com/php/php-src/blob/ebee8df27edf7/UPGRADING#L47-L49
[4] php/php-src#13053

Resolves: #105155
Releases: main, 12.4, 11.5
Change-Id: Ie8b7d46eeb75ba6e32c0e8f6e7e947775083cc15
Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/86371
Tested-by: Garvin Hicking <gh@faktor-e.de>
Reviewed-by: Stefan Bürk <stefan@buerk.tech>
Tested-by: Anja Leichsenring <aleichsenring@ab-softlab.de>
Reviewed-by: Anja Leichsenring <aleichsenring@ab-softlab.de>
Tested-by: core-ci <typo3@b13.com>
Tested-by: Stefan Bürk <stefan@buerk.tech>
Reviewed-by: Garvin Hicking <gh@faktor-e.de>
reviewtypo3org pushed a commit to TYPO3/typo3 that referenced this pull request Sep 29, 2024
Note that this change addresses three different issues, which
need to be done in one step, otherwise none of isolated patches
would get a +1 CI verification:

* Alignment for changed `$escape` parameter handling of CSV
  related methods, which must be avoided with PHP versions below
  8.4.0-beta5, but is required as of PHP 8.4.0-RC1.
* This `$escape` issue needs to be addressed directly in
  the `typo3/testing-framework` and thus needs a raised
  dependency directly.
* PHP 8.4.0.0-RC1 also deprecated the `E_STRICT` constant,
  which needs to be addressed directly.

With [1] the `$escape` parameter for the following method calls

* `str_getcsv()`
* `fputcsv()`
* `fgetcsv()`

must be provided as a 1 character long value. Omitting and
using the default value will emit a PHP deprecation [2] warning
as of PHP 8.4.0-RC1, for example:

  str_getcsv(): the $escape parameter must be provided
  as its default value will change

To mitigate this, PHP recommends following:

  It must be passed explicitly either positionally or
  via named arguments.

This change adjusts all occurences (function calls) and ensures
that the `$escape` parameter is explicitly provided via
specifying all parameters up to that position and not
using a `named arguments` approach for easier backporting.

The TYPO3 testing framework also needs to be aligned to
mitigate `fgetcsv()` issues, and is raised in the same
step - otherwise none of these changes would get a green
CI pipeline run.

The following testing-framework updates are adjusted:

* main: simple update `main` pointer
* 12.4: Raise to tag `8.2.2`
* 11.5: Raise to tag `6.16.10`

Used command(s):

> composer require --dev "typo3/testing-framework":"^6.16.10"

Additionally, PHP 8.4.0-RC1 deprecated the `E_STRICT`
constant, which now emits a E_DEPRECATED which leads to
failed CI tests. This change introduces a core internal
constant with the same integer value, and replaces usages
with this constant to mitigate the E_DEPRECATION. This constant
can then be dropped with TYPO3 v14, preventing a breaking change
at this time. [3][4]

[1] php/php-src#15569
[2] https://github.com/php/php-src/blob/ebee8df27ed/UPGRADING#L617-L622
[3] https://github.com/php/php-src/blob/ebee8df27edf7/UPGRADING#L47-L49
[4] php/php-src#13053

Resolves: #105155
Releases: main, 12.4, 11.5
Change-Id: Ie8b7d46eeb75ba6e32c0e8f6e7e947775083cc15
Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/86377
Tested-by: Stefan Bürk <stefan@buerk.tech>
Reviewed-by: Garvin Hicking <gh@faktor-e.de>
Tested-by: core-ci <typo3@b13.com>
Reviewed-by: Stefan Bürk <stefan@buerk.tech>
Tested-by: Garvin Hicking <gh@faktor-e.de>
TYPO3IncTeam pushed a commit to TYPO3-CMS/backend that referenced this pull request Sep 29, 2024
Note that this change addresses three different issues, which
need to be done in one step, otherwise none of isolated patches
would get a +1 CI verification:

* Alignment for changed `$escape` parameter handling of CSV
  related methods, which must be avoided with PHP versions below
  8.4.0-beta5, but is required as of PHP 8.4.0-RC1.
* This `$escape` issue needs to be addressed directly in
  the `typo3/testing-framework` and thus needs a raised
  dependency directly.
* PHP 8.4.0.0-RC1 also deprecated the `E_STRICT` constant,
  which needs to be addressed directly.

With [1] the `$escape` parameter for the following method calls

* `str_getcsv()`
* `fputcsv()`
* `fgetcsv()`

must be provided as a 1 character long value. Omitting and
using the default value will emit a PHP deprecation [2] warning
as of PHP 8.4.0-RC1, for example:

  str_getcsv(): the $escape parameter must be provided
  as its default value will change

To mitigate this, PHP recommends following:

  It must be passed explicitly either positionally or
  via named arguments.

This change adjusts all occurences (function calls) and ensures
that the `$escape` parameter is explicitly provided via
specifying all parameters up to that position and not
using a `named arguments` approach for easier backporting.

The TYPO3 testing framework also needs to be aligned to
mitigate `fgetcsv()` issues, and is raised in the same
step - otherwise none of these changes would get a green
CI pipeline run.

The following testing-framework updates are adjusted:

* main: simple update `main` pointer
* 12.4: Raise to tag `8.2.2`
* 11.5: Raise to tag `6.16.10`

Used command(s):

> composer require --dev "typo3/testing-framework":"^8.2.2"

Additionally, PHP 8.4.0-RC1 deprecated the `E_STRICT`
constant, which now emits a E_DEPRECATED which leads to
failed CI tests. This change introduces a core internal
constant with the same integer value, and replaces usages
with this constant to mitigate the E_DEPRECATION. This constant
can then be dropped with TYPO3 v14, preventing a breaking change
at this time. [3][4]

[1] php/php-src#15569
[2] https://github.com/php/php-src/blob/ebee8df27ed/UPGRADING#L617-L622
[3] https://github.com/php/php-src/blob/ebee8df27edf7/UPGRADING#L47-L49
[4] php/php-src#13053

Resolves: #105155
Releases: main, 12.4, 11.5
Change-Id: Ie8b7d46eeb75ba6e32c0e8f6e7e947775083cc15
Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/86376
Tested-by: core-ci <typo3@b13.com>
Tested-by: Stefan Bürk <stefan@buerk.tech>
Reviewed-by: Garvin Hicking <gh@faktor-e.de>
Reviewed-by: Stefan Bürk <stefan@buerk.tech>
Tested-by: Garvin Hicking <gh@faktor-e.de>
TYPO3IncTeam pushed a commit to TYPO3-CMS/core that referenced this pull request Sep 29, 2024
Note that this change addresses three different issues, which
need to be done in one step, otherwise none of isolated patches
would get a +1 CI verification:

* Alignment for changed `$escape` parameter handling of CSV
  related methods, which must be avoided with PHP versions below
  8.4.0-beta5, but is required as of PHP 8.4.0-RC1.
* This `$escape` issue needs to be addressed directly in
  the `typo3/testing-framework` and thus needs a raised
  dependency directly.
* PHP 8.4.0.0-RC1 also deprecated the `E_STRICT` constant,
  which needs to be addressed directly.

With [1] the `$escape` parameter for the following method calls

* `str_getcsv()`
* `fputcsv()`
* `fgetcsv()`

must be provided as a 1 character long value. Omitting and
using the default value will emit a PHP deprecation [2] warning
as of PHP 8.4.0-RC1, for example:

  str_getcsv(): the $escape parameter must be provided
  as its default value will change

To mitigate this, PHP recommends following:

  It must be passed explicitly either positionally or
  via named arguments.

This change adjusts all occurences (function calls) and ensures
that the `$escape` parameter is explicitly provided via
specifying all parameters up to that position and not
using a `named arguments` approach for easier backporting.

The TYPO3 testing framework also needs to be aligned to
mitigate `fgetcsv()` issues, and is raised in the same
step - otherwise none of these changes would get a green
CI pipeline run.

The following testing-framework updates are adjusted:

* main: simple update `main` pointer
* 12.4: Raise to tag `8.2.2`
* 11.5: Raise to tag `6.16.10`

Used command(s):

> composer require --dev "typo3/testing-framework":"^8.2.2"

Additionally, PHP 8.4.0-RC1 deprecated the `E_STRICT`
constant, which now emits a E_DEPRECATED which leads to
failed CI tests. This change introduces a core internal
constant with the same integer value, and replaces usages
with this constant to mitigate the E_DEPRECATION. This constant
can then be dropped with TYPO3 v14, preventing a breaking change
at this time. [3][4]

[1] php/php-src#15569
[2] https://github.com/php/php-src/blob/ebee8df27ed/UPGRADING#L617-L622
[3] https://github.com/php/php-src/blob/ebee8df27edf7/UPGRADING#L47-L49
[4] php/php-src#13053

Resolves: #105155
Releases: main, 12.4, 11.5
Change-Id: Ie8b7d46eeb75ba6e32c0e8f6e7e947775083cc15
Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/86376
Tested-by: core-ci <typo3@b13.com>
Tested-by: Stefan Bürk <stefan@buerk.tech>
Reviewed-by: Garvin Hicking <gh@faktor-e.de>
Reviewed-by: Stefan Bürk <stefan@buerk.tech>
Tested-by: Garvin Hicking <gh@faktor-e.de>
TYPO3IncTeam pushed a commit to TYPO3-CMS/install that referenced this pull request Sep 29, 2024
Note that this change addresses three different issues, which
need to be done in one step, otherwise none of isolated patches
would get a +1 CI verification:

* Alignment for changed `$escape` parameter handling of CSV
  related methods, which must be avoided with PHP versions below
  8.4.0-beta5, but is required as of PHP 8.4.0-RC1.
* This `$escape` issue needs to be addressed directly in
  the `typo3/testing-framework` and thus needs a raised
  dependency directly.
* PHP 8.4.0.0-RC1 also deprecated the `E_STRICT` constant,
  which needs to be addressed directly.

With [1] the `$escape` parameter for the following method calls

* `str_getcsv()`
* `fputcsv()`
* `fgetcsv()`

must be provided as a 1 character long value. Omitting and
using the default value will emit a PHP deprecation [2] warning
as of PHP 8.4.0-RC1, for example:

  str_getcsv(): the $escape parameter must be provided
  as its default value will change

To mitigate this, PHP recommends following:

  It must be passed explicitly either positionally or
  via named arguments.

This change adjusts all occurences (function calls) and ensures
that the `$escape` parameter is explicitly provided via
specifying all parameters up to that position and not
using a `named arguments` approach for easier backporting.

The TYPO3 testing framework also needs to be aligned to
mitigate `fgetcsv()` issues, and is raised in the same
step - otherwise none of these changes would get a green
CI pipeline run.

The following testing-framework updates are adjusted:

* main: simple update `main` pointer
* 12.4: Raise to tag `8.2.2`
* 11.5: Raise to tag `6.16.10`

Used command(s):

> composer require --dev "typo3/testing-framework":"^8.2.2"

Additionally, PHP 8.4.0-RC1 deprecated the `E_STRICT`
constant, which now emits a E_DEPRECATED which leads to
failed CI tests. This change introduces a core internal
constant with the same integer value, and replaces usages
with this constant to mitigate the E_DEPRECATION. This constant
can then be dropped with TYPO3 v14, preventing a breaking change
at this time. [3][4]

[1] php/php-src#15569
[2] https://github.com/php/php-src/blob/ebee8df27ed/UPGRADING#L617-L622
[3] https://github.com/php/php-src/blob/ebee8df27edf7/UPGRADING#L47-L49
[4] php/php-src#13053

Resolves: #105155
Releases: main, 12.4, 11.5
Change-Id: Ie8b7d46eeb75ba6e32c0e8f6e7e947775083cc15
Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/86376
Tested-by: core-ci <typo3@b13.com>
Tested-by: Stefan Bürk <stefan@buerk.tech>
Reviewed-by: Garvin Hicking <gh@faktor-e.de>
Reviewed-by: Stefan Bürk <stefan@buerk.tech>
Tested-by: Garvin Hicking <gh@faktor-e.de>
TYPO3IncTeam pushed a commit to TYPO3-CMS/backend that referenced this pull request Sep 29, 2024
Note that this change addresses three different issues, which
need to be done in one step, otherwise none of isolated patches
would get a +1 CI verification:

* Alignment for changed `$escape` parameter handling of CSV
  related methods, which must be avoided with PHP versions below
  8.4.0-beta5, but is required as of PHP 8.4.0-RC1.
* This `$escape` issue needs to be addressed directly in
  the `typo3/testing-framework` and thus needs a raised
  dependency directly.
* PHP 8.4.0.0-RC1 also deprecated the `E_STRICT` constant,
  which needs to be addressed directly.

With [1] the `$escape` parameter for the following method calls

* `str_getcsv()`
* `fputcsv()`
* `fgetcsv()`

must be provided as a 1 character long value. Omitting and
using the default value will emit a PHP deprecation [2] warning
as of PHP 8.4.0-RC1, for example:

  str_getcsv(): the $escape parameter must be provided
  as its default value will change

To mitigate this, PHP recommends following:

  It must be passed explicitly either positionally or
  via named arguments.

This change adjusts all occurences (function calls) and ensures
that the `$escape` parameter is explicitly provided via
specifying all parameters up to that position and not
using a `named arguments` approach for easier backporting.

The TYPO3 testing framework also needs to be aligned to
mitigate `fgetcsv()` issues, and is raised in the same
step - otherwise none of these changes would get a green
CI pipeline run.

The following testing-framework updates are adjusted:

* main: simple update `main` pointer
* 12.4: Raise to tag `8.2.2`
* 11.5: Raise to tag `6.16.10`

Used command(s):

> composer update "typo3/testing-framework"

Additionally, PHP 8.4.0-RC1 deprecated the `E_STRICT`
constant, which now emits a E_DEPRECATED which leads to
failed CI tests. This change introduces a core internal
constant with the same integer value, and replaces usages
with this constant to mitigate the E_DEPRECATION. This constant
can then be dropped with TYPO3 v14, preventing a breaking change
at this time. [3][4]

[1] php/php-src#15569
[2] https://github.com/php/php-src/blob/ebee8df27ed/UPGRADING#L617-L622
[3] https://github.com/php/php-src/blob/ebee8df27edf7/UPGRADING#L47-L49
[4] php/php-src#13053

Resolves: #105155
Releases: main, 12.4, 11.5
Change-Id: Ie8b7d46eeb75ba6e32c0e8f6e7e947775083cc15
Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/86371
Tested-by: Garvin Hicking <gh@faktor-e.de>
Reviewed-by: Stefan Bürk <stefan@buerk.tech>
Tested-by: Anja Leichsenring <aleichsenring@ab-softlab.de>
Reviewed-by: Anja Leichsenring <aleichsenring@ab-softlab.de>
Tested-by: core-ci <typo3@b13.com>
Tested-by: Stefan Bürk <stefan@buerk.tech>
Reviewed-by: Garvin Hicking <gh@faktor-e.de>
TYPO3IncTeam pushed a commit to TYPO3-CMS/core that referenced this pull request Sep 29, 2024
Note that this change addresses three different issues, which
need to be done in one step, otherwise none of isolated patches
would get a +1 CI verification:

* Alignment for changed `$escape` parameter handling of CSV
  related methods, which must be avoided with PHP versions below
  8.4.0-beta5, but is required as of PHP 8.4.0-RC1.
* This `$escape` issue needs to be addressed directly in
  the `typo3/testing-framework` and thus needs a raised
  dependency directly.
* PHP 8.4.0.0-RC1 also deprecated the `E_STRICT` constant,
  which needs to be addressed directly.

With [1] the `$escape` parameter for the following method calls

* `str_getcsv()`
* `fputcsv()`
* `fgetcsv()`

must be provided as a 1 character long value. Omitting and
using the default value will emit a PHP deprecation [2] warning
as of PHP 8.4.0-RC1, for example:

  str_getcsv(): the $escape parameter must be provided
  as its default value will change

To mitigate this, PHP recommends following:

  It must be passed explicitly either positionally or
  via named arguments.

This change adjusts all occurences (function calls) and ensures
that the `$escape` parameter is explicitly provided via
specifying all parameters up to that position and not
using a `named arguments` approach for easier backporting.

The TYPO3 testing framework also needs to be aligned to
mitigate `fgetcsv()` issues, and is raised in the same
step - otherwise none of these changes would get a green
CI pipeline run.

The following testing-framework updates are adjusted:

* main: simple update `main` pointer
* 12.4: Raise to tag `8.2.2`
* 11.5: Raise to tag `6.16.10`

Used command(s):

> composer update "typo3/testing-framework"

Additionally, PHP 8.4.0-RC1 deprecated the `E_STRICT`
constant, which now emits a E_DEPRECATED which leads to
failed CI tests. This change introduces a core internal
constant with the same integer value, and replaces usages
with this constant to mitigate the E_DEPRECATION. This constant
can then be dropped with TYPO3 v14, preventing a breaking change
at this time. [3][4]

[1] php/php-src#15569
[2] https://github.com/php/php-src/blob/ebee8df27ed/UPGRADING#L617-L622
[3] https://github.com/php/php-src/blob/ebee8df27edf7/UPGRADING#L47-L49
[4] php/php-src#13053

Resolves: #105155
Releases: main, 12.4, 11.5
Change-Id: Ie8b7d46eeb75ba6e32c0e8f6e7e947775083cc15
Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/86371
Tested-by: Garvin Hicking <gh@faktor-e.de>
Reviewed-by: Stefan Bürk <stefan@buerk.tech>
Tested-by: Anja Leichsenring <aleichsenring@ab-softlab.de>
Reviewed-by: Anja Leichsenring <aleichsenring@ab-softlab.de>
Tested-by: core-ci <typo3@b13.com>
Tested-by: Stefan Bürk <stefan@buerk.tech>
Reviewed-by: Garvin Hicking <gh@faktor-e.de>
TYPO3IncTeam pushed a commit to TYPO3-CMS/install that referenced this pull request Sep 29, 2024
Note that this change addresses three different issues, which
need to be done in one step, otherwise none of isolated patches
would get a +1 CI verification:

* Alignment for changed `$escape` parameter handling of CSV
  related methods, which must be avoided with PHP versions below
  8.4.0-beta5, but is required as of PHP 8.4.0-RC1.
* This `$escape` issue needs to be addressed directly in
  the `typo3/testing-framework` and thus needs a raised
  dependency directly.
* PHP 8.4.0.0-RC1 also deprecated the `E_STRICT` constant,
  which needs to be addressed directly.

With [1] the `$escape` parameter for the following method calls

* `str_getcsv()`
* `fputcsv()`
* `fgetcsv()`

must be provided as a 1 character long value. Omitting and
using the default value will emit a PHP deprecation [2] warning
as of PHP 8.4.0-RC1, for example:

  str_getcsv(): the $escape parameter must be provided
  as its default value will change

To mitigate this, PHP recommends following:

  It must be passed explicitly either positionally or
  via named arguments.

This change adjusts all occurences (function calls) and ensures
that the `$escape` parameter is explicitly provided via
specifying all parameters up to that position and not
using a `named arguments` approach for easier backporting.

The TYPO3 testing framework also needs to be aligned to
mitigate `fgetcsv()` issues, and is raised in the same
step - otherwise none of these changes would get a green
CI pipeline run.

The following testing-framework updates are adjusted:

* main: simple update `main` pointer
* 12.4: Raise to tag `8.2.2`
* 11.5: Raise to tag `6.16.10`

Used command(s):

> composer update "typo3/testing-framework"

Additionally, PHP 8.4.0-RC1 deprecated the `E_STRICT`
constant, which now emits a E_DEPRECATED which leads to
failed CI tests. This change introduces a core internal
constant with the same integer value, and replaces usages
with this constant to mitigate the E_DEPRECATION. This constant
can then be dropped with TYPO3 v14, preventing a breaking change
at this time. [3][4]

[1] php/php-src#15569
[2] https://github.com/php/php-src/blob/ebee8df27ed/UPGRADING#L617-L622
[3] https://github.com/php/php-src/blob/ebee8df27edf7/UPGRADING#L47-L49
[4] php/php-src#13053

Resolves: #105155
Releases: main, 12.4, 11.5
Change-Id: Ie8b7d46eeb75ba6e32c0e8f6e7e947775083cc15
Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/86371
Tested-by: Garvin Hicking <gh@faktor-e.de>
Reviewed-by: Stefan Bürk <stefan@buerk.tech>
Tested-by: Anja Leichsenring <aleichsenring@ab-softlab.de>
Reviewed-by: Anja Leichsenring <aleichsenring@ab-softlab.de>
Tested-by: core-ci <typo3@b13.com>
Tested-by: Stefan Bürk <stefan@buerk.tech>
Reviewed-by: Garvin Hicking <gh@faktor-e.de>
TYPO3IncTeam pushed a commit to TYPO3-CMS/backend that referenced this pull request Sep 29, 2024
Note that this change addresses three different issues, which
need to be done in one step, otherwise none of isolated patches
would get a +1 CI verification:

* Alignment for changed `$escape` parameter handling of CSV
  related methods, which must be avoided with PHP versions below
  8.4.0-beta5, but is required as of PHP 8.4.0-RC1.
* This `$escape` issue needs to be addressed directly in
  the `typo3/testing-framework` and thus needs a raised
  dependency directly.
* PHP 8.4.0.0-RC1 also deprecated the `E_STRICT` constant,
  which needs to be addressed directly.

With [1] the `$escape` parameter for the following method calls

* `str_getcsv()`
* `fputcsv()`
* `fgetcsv()`

must be provided as a 1 character long value. Omitting and
using the default value will emit a PHP deprecation [2] warning
as of PHP 8.4.0-RC1, for example:

  str_getcsv(): the $escape parameter must be provided
  as its default value will change

To mitigate this, PHP recommends following:

  It must be passed explicitly either positionally or
  via named arguments.

This change adjusts all occurences (function calls) and ensures
that the `$escape` parameter is explicitly provided via
specifying all parameters up to that position and not
using a `named arguments` approach for easier backporting.

The TYPO3 testing framework also needs to be aligned to
mitigate `fgetcsv()` issues, and is raised in the same
step - otherwise none of these changes would get a green
CI pipeline run.

The following testing-framework updates are adjusted:

* main: simple update `main` pointer
* 12.4: Raise to tag `8.2.2`
* 11.5: Raise to tag `6.16.10`

Used command(s):

> composer require --dev "typo3/testing-framework":"^6.16.10"

Additionally, PHP 8.4.0-RC1 deprecated the `E_STRICT`
constant, which now emits a E_DEPRECATED which leads to
failed CI tests. This change introduces a core internal
constant with the same integer value, and replaces usages
with this constant to mitigate the E_DEPRECATION. This constant
can then be dropped with TYPO3 v14, preventing a breaking change
at this time. [3][4]

[1] php/php-src#15569
[2] https://github.com/php/php-src/blob/ebee8df27ed/UPGRADING#L617-L622
[3] https://github.com/php/php-src/blob/ebee8df27edf7/UPGRADING#L47-L49
[4] php/php-src#13053

Resolves: #105155
Releases: main, 12.4, 11.5
Change-Id: Ie8b7d46eeb75ba6e32c0e8f6e7e947775083cc15
Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/86377
Tested-by: Stefan Bürk <stefan@buerk.tech>
Reviewed-by: Garvin Hicking <gh@faktor-e.de>
Tested-by: core-ci <typo3@b13.com>
Reviewed-by: Stefan Bürk <stefan@buerk.tech>
Tested-by: Garvin Hicking <gh@faktor-e.de>
TYPO3IncTeam pushed a commit to TYPO3-CMS/core that referenced this pull request Sep 29, 2024
Note that this change addresses three different issues, which
need to be done in one step, otherwise none of isolated patches
would get a +1 CI verification:

* Alignment for changed `$escape` parameter handling of CSV
  related methods, which must be avoided with PHP versions below
  8.4.0-beta5, but is required as of PHP 8.4.0-RC1.
* This `$escape` issue needs to be addressed directly in
  the `typo3/testing-framework` and thus needs a raised
  dependency directly.
* PHP 8.4.0.0-RC1 also deprecated the `E_STRICT` constant,
  which needs to be addressed directly.

With [1] the `$escape` parameter for the following method calls

* `str_getcsv()`
* `fputcsv()`
* `fgetcsv()`

must be provided as a 1 character long value. Omitting and
using the default value will emit a PHP deprecation [2] warning
as of PHP 8.4.0-RC1, for example:

  str_getcsv(): the $escape parameter must be provided
  as its default value will change

To mitigate this, PHP recommends following:

  It must be passed explicitly either positionally or
  via named arguments.

This change adjusts all occurences (function calls) and ensures
that the `$escape` parameter is explicitly provided via
specifying all parameters up to that position and not
using a `named arguments` approach for easier backporting.

The TYPO3 testing framework also needs to be aligned to
mitigate `fgetcsv()` issues, and is raised in the same
step - otherwise none of these changes would get a green
CI pipeline run.

The following testing-framework updates are adjusted:

* main: simple update `main` pointer
* 12.4: Raise to tag `8.2.2`
* 11.5: Raise to tag `6.16.10`

Used command(s):

> composer require --dev "typo3/testing-framework":"^6.16.10"

Additionally, PHP 8.4.0-RC1 deprecated the `E_STRICT`
constant, which now emits a E_DEPRECATED which leads to
failed CI tests. This change introduces a core internal
constant with the same integer value, and replaces usages
with this constant to mitigate the E_DEPRECATION. This constant
can then be dropped with TYPO3 v14, preventing a breaking change
at this time. [3][4]

[1] php/php-src#15569
[2] https://github.com/php/php-src/blob/ebee8df27ed/UPGRADING#L617-L622
[3] https://github.com/php/php-src/blob/ebee8df27edf7/UPGRADING#L47-L49
[4] php/php-src#13053

Resolves: #105155
Releases: main, 12.4, 11.5
Change-Id: Ie8b7d46eeb75ba6e32c0e8f6e7e947775083cc15
Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/86377
Tested-by: Stefan Bürk <stefan@buerk.tech>
Reviewed-by: Garvin Hicking <gh@faktor-e.de>
Tested-by: core-ci <typo3@b13.com>
Reviewed-by: Stefan Bürk <stefan@buerk.tech>
Tested-by: Garvin Hicking <gh@faktor-e.de>
TYPO3IncTeam pushed a commit to TYPO3-CMS/frontend that referenced this pull request Sep 29, 2024
Note that this change addresses three different issues, which
need to be done in one step, otherwise none of isolated patches
would get a +1 CI verification:

* Alignment for changed `$escape` parameter handling of CSV
  related methods, which must be avoided with PHP versions below
  8.4.0-beta5, but is required as of PHP 8.4.0-RC1.
* This `$escape` issue needs to be addressed directly in
  the `typo3/testing-framework` and thus needs a raised
  dependency directly.
* PHP 8.4.0.0-RC1 also deprecated the `E_STRICT` constant,
  which needs to be addressed directly.

With [1] the `$escape` parameter for the following method calls

* `str_getcsv()`
* `fputcsv()`
* `fgetcsv()`

must be provided as a 1 character long value. Omitting and
using the default value will emit a PHP deprecation [2] warning
as of PHP 8.4.0-RC1, for example:

  str_getcsv(): the $escape parameter must be provided
  as its default value will change

To mitigate this, PHP recommends following:

  It must be passed explicitly either positionally or
  via named arguments.

This change adjusts all occurences (function calls) and ensures
that the `$escape` parameter is explicitly provided via
specifying all parameters up to that position and not
using a `named arguments` approach for easier backporting.

The TYPO3 testing framework also needs to be aligned to
mitigate `fgetcsv()` issues, and is raised in the same
step - otherwise none of these changes would get a green
CI pipeline run.

The following testing-framework updates are adjusted:

* main: simple update `main` pointer
* 12.4: Raise to tag `8.2.2`
* 11.5: Raise to tag `6.16.10`

Used command(s):

> composer require --dev "typo3/testing-framework":"^6.16.10"

Additionally, PHP 8.4.0-RC1 deprecated the `E_STRICT`
constant, which now emits a E_DEPRECATED which leads to
failed CI tests. This change introduces a core internal
constant with the same integer value, and replaces usages
with this constant to mitigate the E_DEPRECATION. This constant
can then be dropped with TYPO3 v14, preventing a breaking change
at this time. [3][4]

[1] php/php-src#15569
[2] https://github.com/php/php-src/blob/ebee8df27ed/UPGRADING#L617-L622
[3] https://github.com/php/php-src/blob/ebee8df27edf7/UPGRADING#L47-L49
[4] php/php-src#13053

Resolves: #105155
Releases: main, 12.4, 11.5
Change-Id: Ie8b7d46eeb75ba6e32c0e8f6e7e947775083cc15
Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/86377
Tested-by: Stefan Bürk <stefan@buerk.tech>
Reviewed-by: Garvin Hicking <gh@faktor-e.de>
Tested-by: core-ci <typo3@b13.com>
Reviewed-by: Stefan Bürk <stefan@buerk.tech>
Tested-by: Garvin Hicking <gh@faktor-e.de>
TYPO3IncTeam pushed a commit to TYPO3-CMS/install that referenced this pull request Sep 29, 2024
Note that this change addresses three different issues, which
need to be done in one step, otherwise none of isolated patches
would get a +1 CI verification:

* Alignment for changed `$escape` parameter handling of CSV
  related methods, which must be avoided with PHP versions below
  8.4.0-beta5, but is required as of PHP 8.4.0-RC1.
* This `$escape` issue needs to be addressed directly in
  the `typo3/testing-framework` and thus needs a raised
  dependency directly.
* PHP 8.4.0.0-RC1 also deprecated the `E_STRICT` constant,
  which needs to be addressed directly.

With [1] the `$escape` parameter for the following method calls

* `str_getcsv()`
* `fputcsv()`
* `fgetcsv()`

must be provided as a 1 character long value. Omitting and
using the default value will emit a PHP deprecation [2] warning
as of PHP 8.4.0-RC1, for example:

  str_getcsv(): the $escape parameter must be provided
  as its default value will change

To mitigate this, PHP recommends following:

  It must be passed explicitly either positionally or
  via named arguments.

This change adjusts all occurences (function calls) and ensures
that the `$escape` parameter is explicitly provided via
specifying all parameters up to that position and not
using a `named arguments` approach for easier backporting.

The TYPO3 testing framework also needs to be aligned to
mitigate `fgetcsv()` issues, and is raised in the same
step - otherwise none of these changes would get a green
CI pipeline run.

The following testing-framework updates are adjusted:

* main: simple update `main` pointer
* 12.4: Raise to tag `8.2.2`
* 11.5: Raise to tag `6.16.10`

Used command(s):

> composer require --dev "typo3/testing-framework":"^6.16.10"

Additionally, PHP 8.4.0-RC1 deprecated the `E_STRICT`
constant, which now emits a E_DEPRECATED which leads to
failed CI tests. This change introduces a core internal
constant with the same integer value, and replaces usages
with this constant to mitigate the E_DEPRECATION. This constant
can then be dropped with TYPO3 v14, preventing a breaking change
at this time. [3][4]

[1] php/php-src#15569
[2] https://github.com/php/php-src/blob/ebee8df27ed/UPGRADING#L617-L622
[3] https://github.com/php/php-src/blob/ebee8df27edf7/UPGRADING#L47-L49
[4] php/php-src#13053

Resolves: #105155
Releases: main, 12.4, 11.5
Change-Id: Ie8b7d46eeb75ba6e32c0e8f6e7e947775083cc15
Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/86377
Tested-by: Stefan Bürk <stefan@buerk.tech>
Reviewed-by: Garvin Hicking <gh@faktor-e.de>
Tested-by: core-ci <typo3@b13.com>
Reviewed-by: Stefan Bürk <stefan@buerk.tech>
Tested-by: Garvin Hicking <gh@faktor-e.de>
reviewtypo3org pushed a commit to TYPO3/typo3 that referenced this pull request Oct 7, 2024
Note that this change addresses three different issues, which
need to be done in one step, otherwise none of isolated patches
would get a +1 CI verification:

* Alignment for changed `$escape` parameter handling of CSV
  related methods, which must be avoided with PHP versions below
  8.4.0-beta5, but is required as of PHP 8.4.0-RC1.
* This `$escape` issue needs to be addressed directly in
  the `typo3/testing-framework` and thus needs a raised
  dependency directly.
* PHP 8.4.0.0-RC1 also deprecated the `E_STRICT` constant,
  which needs to be addressed directly.

With [1] the `$escape` parameter for the following method calls

* `str_getcsv()`
* `fputcsv()`
* `fgetcsv()`

must be provided as a 1 character long value. Omitting and
using the default value will emit a PHP deprecation [2] warning
as of PHP 8.4.0-RC1, for example:

  str_getcsv(): the $escape parameter must be provided
  as its default value will change

To mitigate this, PHP recommends following:

  It must be passed explicitly either positionally or
  via named arguments.

This change adjusts all occurences (function calls) and ensures
that the `$escape` parameter is explicitly provided via
specifying all parameters up to that position and not
using a `named arguments` approach for easier backporting.

The TYPO3 testing framework also needs to be aligned to
mitigate `fgetcsv()` issues, and is raised in the same
step - otherwise none of these changes would get a green
CI pipeline run.

The following testing-framework updates are adjusted:

* main: simple update `main` pointer
* 12.4: Raise to tag `8.2.2`
* 11.5: Raise to tag `6.16.10`

Used command(s):

> composer update "typo3/testing-framework"

Note that the backport has been squashed with the later partly
revert using integer values instead of adding a own deprecated
constant #105165 for [3][4].

We can not deprecate a constant and use it at the same time.
We basically traded a deprecated constant with a new deprecated
constant. Therefore this intermediate constant (added without being
released yet in #105155) is removed again and replaced by a plain value.

It's too likely that this constant is used by 3rd party code
(or dependencies like typo3/testing-framework), which then makes
it hard to remove this constant again (despite being deprecated).

Also defining an own constant – that looks like an official PHP
constant – into the global space, has caused immediate confusions
which we want to avoid by using a scalar value + comment.

The reason (possible 3rd party extensions that may still trigger
this error) why this is kept (and not just removed) is also added
to all usages now.

[1] php/php-src#15569
[2] https://github.com/php/php-src/blob/ebee8df27ed/UPGRADING#L617-L622
[3] https://github.com/php/php-src/blob/ebee8df27edf7/UPGRADING#L47-L49
[4] php/php-src#13053

Resolves: #105155
Resolves: #105165
Releases: main, 13.3, 12.4, 11.5
Change-Id: Ie8b7d46eeb75ba6e32c0e8f6e7e947775083cc15
Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/86456
Tested-by: Christian Kuhn <lolli@schwarzbu.ch>
Tested-by: Oliver Hader <oliver.hader@typo3.org>
Tested-by: core-ci <typo3@b13.com>
Reviewed-by: Oliver Hader <oliver.hader@typo3.org>
Reviewed-by: Christian Kuhn <lolli@schwarzbu.ch>
TYPO3IncTeam pushed a commit to TYPO3-CMS/backend that referenced this pull request Oct 7, 2024
Note that this change addresses three different issues, which
need to be done in one step, otherwise none of isolated patches
would get a +1 CI verification:

* Alignment for changed `$escape` parameter handling of CSV
  related methods, which must be avoided with PHP versions below
  8.4.0-beta5, but is required as of PHP 8.4.0-RC1.
* This `$escape` issue needs to be addressed directly in
  the `typo3/testing-framework` and thus needs a raised
  dependency directly.
* PHP 8.4.0.0-RC1 also deprecated the `E_STRICT` constant,
  which needs to be addressed directly.

With [1] the `$escape` parameter for the following method calls

* `str_getcsv()`
* `fputcsv()`
* `fgetcsv()`

must be provided as a 1 character long value. Omitting and
using the default value will emit a PHP deprecation [2] warning
as of PHP 8.4.0-RC1, for example:

  str_getcsv(): the $escape parameter must be provided
  as its default value will change

To mitigate this, PHP recommends following:

  It must be passed explicitly either positionally or
  via named arguments.

This change adjusts all occurences (function calls) and ensures
that the `$escape` parameter is explicitly provided via
specifying all parameters up to that position and not
using a `named arguments` approach for easier backporting.

The TYPO3 testing framework also needs to be aligned to
mitigate `fgetcsv()` issues, and is raised in the same
step - otherwise none of these changes would get a green
CI pipeline run.

The following testing-framework updates are adjusted:

* main: simple update `main` pointer
* 12.4: Raise to tag `8.2.2`
* 11.5: Raise to tag `6.16.10`

Used command(s):

> composer update "typo3/testing-framework"

Note that the backport has been squashed with the later partly
revert using integer values instead of adding a own deprecated
constant #105165 for [3][4].

We can not deprecate a constant and use it at the same time.
We basically traded a deprecated constant with a new deprecated
constant. Therefore this intermediate constant (added without being
released yet in #105155) is removed again and replaced by a plain value.

It's too likely that this constant is used by 3rd party code
(or dependencies like typo3/testing-framework), which then makes
it hard to remove this constant again (despite being deprecated).

Also defining an own constant – that looks like an official PHP
constant – into the global space, has caused immediate confusions
which we want to avoid by using a scalar value + comment.

The reason (possible 3rd party extensions that may still trigger
this error) why this is kept (and not just removed) is also added
to all usages now.

[1] php/php-src#15569
[2] https://github.com/php/php-src/blob/ebee8df27ed/UPGRADING#L617-L622
[3] https://github.com/php/php-src/blob/ebee8df27edf7/UPGRADING#L47-L49
[4] php/php-src#13053

Resolves: #105155
Resolves: #105165
Releases: main, 13.3, 12.4, 11.5
Change-Id: Ie8b7d46eeb75ba6e32c0e8f6e7e947775083cc15
Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/86456
Tested-by: Christian Kuhn <lolli@schwarzbu.ch>
Tested-by: Oliver Hader <oliver.hader@typo3.org>
Tested-by: core-ci <typo3@b13.com>
Reviewed-by: Oliver Hader <oliver.hader@typo3.org>
Reviewed-by: Christian Kuhn <lolli@schwarzbu.ch>
TYPO3IncTeam pushed a commit to TYPO3-CMS/core that referenced this pull request Oct 7, 2024
Note that this change addresses three different issues, which
need to be done in one step, otherwise none of isolated patches
would get a +1 CI verification:

* Alignment for changed `$escape` parameter handling of CSV
  related methods, which must be avoided with PHP versions below
  8.4.0-beta5, but is required as of PHP 8.4.0-RC1.
* This `$escape` issue needs to be addressed directly in
  the `typo3/testing-framework` and thus needs a raised
  dependency directly.
* PHP 8.4.0.0-RC1 also deprecated the `E_STRICT` constant,
  which needs to be addressed directly.

With [1] the `$escape` parameter for the following method calls

* `str_getcsv()`
* `fputcsv()`
* `fgetcsv()`

must be provided as a 1 character long value. Omitting and
using the default value will emit a PHP deprecation [2] warning
as of PHP 8.4.0-RC1, for example:

  str_getcsv(): the $escape parameter must be provided
  as its default value will change

To mitigate this, PHP recommends following:

  It must be passed explicitly either positionally or
  via named arguments.

This change adjusts all occurences (function calls) and ensures
that the `$escape` parameter is explicitly provided via
specifying all parameters up to that position and not
using a `named arguments` approach for easier backporting.

The TYPO3 testing framework also needs to be aligned to
mitigate `fgetcsv()` issues, and is raised in the same
step - otherwise none of these changes would get a green
CI pipeline run.

The following testing-framework updates are adjusted:

* main: simple update `main` pointer
* 12.4: Raise to tag `8.2.2`
* 11.5: Raise to tag `6.16.10`

Used command(s):

> composer update "typo3/testing-framework"

Note that the backport has been squashed with the later partly
revert using integer values instead of adding a own deprecated
constant #105165 for [3][4].

We can not deprecate a constant and use it at the same time.
We basically traded a deprecated constant with a new deprecated
constant. Therefore this intermediate constant (added without being
released yet in #105155) is removed again and replaced by a plain value.

It's too likely that this constant is used by 3rd party code
(or dependencies like typo3/testing-framework), which then makes
it hard to remove this constant again (despite being deprecated).

Also defining an own constant – that looks like an official PHP
constant – into the global space, has caused immediate confusions
which we want to avoid by using a scalar value + comment.

The reason (possible 3rd party extensions that may still trigger
this error) why this is kept (and not just removed) is also added
to all usages now.

[1] php/php-src#15569
[2] https://github.com/php/php-src/blob/ebee8df27ed/UPGRADING#L617-L622
[3] https://github.com/php/php-src/blob/ebee8df27edf7/UPGRADING#L47-L49
[4] php/php-src#13053

Resolves: #105155
Resolves: #105165
Releases: main, 13.3, 12.4, 11.5
Change-Id: Ie8b7d46eeb75ba6e32c0e8f6e7e947775083cc15
Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/86456
Tested-by: Christian Kuhn <lolli@schwarzbu.ch>
Tested-by: Oliver Hader <oliver.hader@typo3.org>
Tested-by: core-ci <typo3@b13.com>
Reviewed-by: Oliver Hader <oliver.hader@typo3.org>
Reviewed-by: Christian Kuhn <lolli@schwarzbu.ch>
TYPO3IncTeam pushed a commit to TYPO3-CMS/install that referenced this pull request Oct 7, 2024
Note that this change addresses three different issues, which
need to be done in one step, otherwise none of isolated patches
would get a +1 CI verification:

* Alignment for changed `$escape` parameter handling of CSV
  related methods, which must be avoided with PHP versions below
  8.4.0-beta5, but is required as of PHP 8.4.0-RC1.
* This `$escape` issue needs to be addressed directly in
  the `typo3/testing-framework` and thus needs a raised
  dependency directly.
* PHP 8.4.0.0-RC1 also deprecated the `E_STRICT` constant,
  which needs to be addressed directly.

With [1] the `$escape` parameter for the following method calls

* `str_getcsv()`
* `fputcsv()`
* `fgetcsv()`

must be provided as a 1 character long value. Omitting and
using the default value will emit a PHP deprecation [2] warning
as of PHP 8.4.0-RC1, for example:

  str_getcsv(): the $escape parameter must be provided
  as its default value will change

To mitigate this, PHP recommends following:

  It must be passed explicitly either positionally or
  via named arguments.

This change adjusts all occurences (function calls) and ensures
that the `$escape` parameter is explicitly provided via
specifying all parameters up to that position and not
using a `named arguments` approach for easier backporting.

The TYPO3 testing framework also needs to be aligned to
mitigate `fgetcsv()` issues, and is raised in the same
step - otherwise none of these changes would get a green
CI pipeline run.

The following testing-framework updates are adjusted:

* main: simple update `main` pointer
* 12.4: Raise to tag `8.2.2`
* 11.5: Raise to tag `6.16.10`

Used command(s):

> composer update "typo3/testing-framework"

Note that the backport has been squashed with the later partly
revert using integer values instead of adding a own deprecated
constant #105165 for [3][4].

We can not deprecate a constant and use it at the same time.
We basically traded a deprecated constant with a new deprecated
constant. Therefore this intermediate constant (added without being
released yet in #105155) is removed again and replaced by a plain value.

It's too likely that this constant is used by 3rd party code
(or dependencies like typo3/testing-framework), which then makes
it hard to remove this constant again (despite being deprecated).

Also defining an own constant – that looks like an official PHP
constant – into the global space, has caused immediate confusions
which we want to avoid by using a scalar value + comment.

The reason (possible 3rd party extensions that may still trigger
this error) why this is kept (and not just removed) is also added
to all usages now.

[1] php/php-src#15569
[2] https://github.com/php/php-src/blob/ebee8df27ed/UPGRADING#L617-L622
[3] https://github.com/php/php-src/blob/ebee8df27edf7/UPGRADING#L47-L49
[4] php/php-src#13053

Resolves: #105155
Resolves: #105165
Releases: main, 13.3, 12.4, 11.5
Change-Id: Ie8b7d46eeb75ba6e32c0e8f6e7e947775083cc15
Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/86456
Tested-by: Christian Kuhn <lolli@schwarzbu.ch>
Tested-by: Oliver Hader <oliver.hader@typo3.org>
Tested-by: core-ci <typo3@b13.com>
Reviewed-by: Oliver Hader <oliver.hader@typo3.org>
Reviewed-by: Christian Kuhn <lolli@schwarzbu.ch>
@andypost
Copy link
Contributor

andypost commented Oct 8, 2024

Using 8.4.0 RC2 I see a lot of warnings in pearcmd.php

Deprecated: Constant E_STRICT is deprecated in /usr/local/lib/php/pearcmd.php on line 441
Deprecated: Constant E_STRICT is deprecated in /usr/local/lib/php/pearcmd.php on line 441
Deprecated: Constant E_STRICT is deprecated in /usr/local/lib/php/pearcmd.php on line 441

is there pear repo to fix it?

@jyxjjj
Copy link

jyxjjj commented Dec 16, 2024

This can be easily bypassed via change it into 2048. I am here because there's a very well known repository negatively fixes their error. I think it can be detected inside error_reporting function. Can you fix this bypass error? May I create a new issue?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

9 participants