Comments (4)
PHP 8.0 also introduces an internal mechanism that automatically adds the string
return type to __toString
because this magic method was already strict in earlier versions.
This is why the Stringable polyfill has been implemented without an explicit return type to allow writing code compatible with more PHP versions.
from polyfill.
Note that the Stringable class from the polyfill is only loaded on PHP 7.x and older. On PHP 8.0+, the native implementation is the one being used anyway.
from polyfill.
PHP 8.0 also introduces an internal mechanism that automatically adds the
string
return type to__toString
because this magic method was already strict in earlier versions. This is why the Stringable polyfill has been implemented without an explicit return type to allow writing code compatible with more PHP versions.
Interesting. This behaviour isn't covered in the documentation for Stringable
, but it checks out. Yay for undocumented internal mechanisms 🎉 /s
Note that the Stringable class from the polyfill is only loaded on PHP 7.x and older. On PHP 8.0+, the native implementation is the one being used anyway.
Yes, sorry, I should have mentioned the issue only surfaces on PHP 7.x.
from polyfill.
PHP 8.0 introduced
Stringable::__toString()
with a return type ofstring
that's enforced at runtime
No, it is not: https://3v4l.org/UpafS
This causes tests and static analysis of
Stringable
implementations with no__toString()
return type to succeed
Which is exactly how that interface behaves on PHP 8. Our polyfill must not be more strict than the real implementation. And even if we did, your static analysis issues would resurface once you upgrade to PHP 8.
Your static analysis issue is 100% home made.
from polyfill.
Related Issues (20)
- mb_strlen returns 0 instead of 1 for the char chr(254) HOT 7
- polyfill-mbstring: mb_check_encoding crashes for array input
- normalizer_is_normalized has nullable string parameter HOT 2
- [Tests] Polyfills not loaded HOT 5
- Polyfill DATE_ISO8601_EXPANDED HOT 3
- Missing polyfills for PHP 8.3 HOT 1
- #[\SensitiveParameter] is available since PHP 8.2, but loaded on 8.1 HOT 1
- Backport fix for ini_parse_quantity from PHP HOT 2
- Polyfill PHP 8.3 is incomplete HOT 3
- Missing str_increment and str_decrement polyfill
- [PHP 8.4] `mb_trim`, `mb_ltrim`, and `mb_rtrim` polyfills HOT 1
- Intl Collator types are (slightly) incoherent HOT 2
- ini_parse_quantity not defined when using the polyfill HOT 2
- Inconsistency of composer autoload and packages after removing polyfill package HOT 1
- [PHP 8.4] `mb_ucfirst()` and `mb_lcfirst()` polyfills HOT 1
- Inconsistent function calls in test cases HOT 1
- Function signature checking should be improved HOT 1
- [PHP 8.4] composer require polyfill-php84 is failing HOT 3
- PHP 8.4 `array_find`, `array_find_key`, `array_any` and `array_all` HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from polyfill.