fix: workaround for Faker deprecation errors in PHP 8.2#6758
fix: workaround for Faker deprecation errors in PHP 8.2#6758kenjis merged 3 commits intocodeigniter4:developfrom
Conversation
MGatner
left a comment
There was a problem hiding this comment.
I'm a little uneasy about the vendor-specific exception workaround. That said, we have so few dependencies, and this one is dev only. Let's see what other opinions surface.
|
Another case against this: it might hide errors that people would actually like to see. This is, after all, what deprecations are for. For example, did you know Faker has deprecated magic property access? I didn't until something went wrong in some code last week and I accidentally found the deprecations due to a dependency mishap, because of the way they handle them. // deprecated:
$faker->firstName;
// use:
$faker->firstName()Ref: |
|
The Faker deprecated magic property access error never shows in CI4 testing. The function trigger_deprecation(string $package, string $version, string $message, ...$args): void
{
@trigger_error(($package || $version ? "Since $package $version: " : '').($args ? vsprintf($message, $args) : $message), \E_USER_DEPRECATED);
}In PHP 7.4, CodeIgniter4/system/Debug/Exceptions.php Lines 152 to 159 in e0779d7 In PHP 8, the In both cases, E_USER_DEPRECATED error is not shown. |
--- a/system/Debug/Exceptions.php
+++ b/system/Debug/Exceptions.php
@@ -151,7 +151,7 @@ class Exceptions
*/
public function errorHandler(int $severity, string $message, ?string $file = null, ?int $line = null)
{
- if (error_reporting() & $severity) {
+ if (E_ALL & $severity) {
throw new ErrorException($message, 0, $severity, $file, $line);
}
$ ./phpunit tests/system/Test/FabricatorTest.php
PHPUnit 9.5.25 #StandWithUkraine
Runtime: PHP 8.1.11
Configuration: /Users/kenji/work/codeigniter/official/CodeIgniter4/phpunit.xml
.........E...........EEEEEEEEEEEEEEEE.......... 47 / 47 (100%)
Time: 00:00.625, Memory: 18.00 MB
There were 17 errors:
1) CodeIgniter\Test\FabricatorTest::testGetFakerReturnsUsableGenerator
ErrorException: Since fakerphp/faker 1.14: Accessing property "randomDigit" is deprecated, use "randomDigit()" instead.
/Users/kenji/work/codeigniter/official/CodeIgniter4/vendor/symfony/deprecation-contracts/function.php:25
/Users/kenji/work/codeigniter/official/CodeIgniter4/vendor/fakerphp/faker/src/Faker/Generator.php:950
/Users/kenji/work/codeigniter/official/CodeIgniter4/tests/system/Test/FabricatorTest.php:123
...
ERRORS!
Tests: 47, Assertions: 32, Errors: 17. |
e3d4fa1 to
7bd1ed5
Compare
I changed to limit only the error |
MGatner
left a comment
There was a problem hiding this comment.
Thanks for making it specific. I'm okay with this under the banner of "workaround to support 8.2", since it is actually just a deprecation upstream. Let's be sure to pull this whenever Faker updates.
Description
See #6170
Suppress the following error in PHP 8.2.
This error prevents our app and library developments to support 8.2. See #6172 (comment)
Checklist: