Weave Code
Code Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message
Polyfill Php80

Polyfill Php80 Laravel Package

symfony/polyfill-php80

Backport of PHP 8.0 core features for older runtimes. Adds Stringable, fdiv, ValueError/UnhandledMatchError, FILTER_VALIDATE_BOOL, get_debug_type, PhpToken, preg_last_error_msg, str_contains/starts_with/ends_with, and get_resource_id.

View on GitHub
Deep Wiki
Context7

Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions

Frequently asked questions about Polyfill Php80
How do I use symfony/polyfill-php80 in Laravel to enable PHP 8.0 features like str_contains on PHP 7.4?
Install via Composer with `composer require symfony/polyfill-php80`, then use PHP 8.0+ functions directly in your Laravel code. No additional configuration is needed—polyfills are autoloaded transparently. For example, `str_contains($haystack, $needle)` will work on PHP 7.4 as if you were on PHP 8.0+.
Will this package break my Laravel 8.x or 9.x application?
No, this package is designed for backward compatibility. It only activates polyfills when native PHP 8.0+ features are missing, so your Laravel 8.x or 9.x app will continue to work unchanged. It’s safe for production use and widely adopted in the Symfony/Laravel ecosystem.
Does symfony/polyfill-php80 support Laravel’s dependency injection or service providers?
No, this package doesn’t interact with Laravel’s service container or providers. It’s a pure PHP polyfill library that works at the language level, so you can use it anywhere in your Laravel app without modifying `AppServiceProvider` or `config/app.php`.
Can I use PHP 8.0’s match expressions with this polyfill on PHP 7.4?
Yes, the polyfill includes `UnhandledMatchError` and basic match expression support, but complex match logic may not behave identically to PHP 8.0+. Test thoroughly, especially edge cases like nested matches or exhaustiveness checks, and consider adding runtime checks like `if (PHP_VERSION_ID >= 80000) { ... }` for critical paths.
What’s the performance impact of using these polyfills in a high-traffic Laravel API?
The overhead is minimal—polyfills add ~100KB to autoload but execute at near-native speed. For performance-critical functions like `fdiv` or `preg_last_error_msg`, benchmark in your specific use case. If precision or speed is critical (e.g., financial calculations), avoid polyfilled functions or upgrade PHP.
How do I test Laravel code using these polyfills on PHP 7.4 in CI?
Run your tests on PHP 7.4 in your CI pipeline as usual—no extra setup is required. Ensure your test suite covers polyfill-dependent code paths, especially edge cases like `ValueError` handling or `str_contains` with Unicode strings. Use PHPUnit’s matrix testing if you support multiple PHP versions.
Are there conflicts if my Laravel app or a third-party package already defines str_contains or ValueError?
Potential conflicts can occur if your app or a package defines custom implementations of polyfilled functions. Audit your codebase for overrides (e.g., `function str_contains()` or `class ValueError`) and either rename them or remove them before installing the polyfill. Symfony’s polyfills are designed to replace, not extend, existing functionality.
Can I use this polyfill to adopt typed properties or return type hints in Laravel 8.x?
No, this polyfill only backports PHP 8.0 *core features*, not language constructs like typed properties or union types. For those, you’ll need PHP 8.0+ or alternative solutions like `phpstan/extension-installer` for static analysis. The polyfill enables syntax like `Stringable` or `match` but doesn’t change Laravel’s type system.
What’s the long-term strategy for removing these polyfills when I upgrade to PHP 8.0+?
Polyfills are designed for gradual adoption. Once you upgrade to PHP 8.0+, simply remove `symfony/polyfill-php80` from `composer.json` and run `composer update`. The polyfills don’t modify your code, so refactoring is minimal—just ensure your app passes tests on the new PHP version. Use `if (PHP_VERSION_ID >= 80000)` checks for conditional logic during transition.
Are there alternatives to symfony/pphp80 for Laravel, like a custom polyfill or other packages?
Symfony’s polyfills are the most widely tested and maintained option for PHP 8.0+ features. Alternatives like `ramsey/uuid` or `vlucas/phpdotenv` don’t cover the same breadth of core PHP 8.0 features. For niche cases, you could write custom polyfills, but they’d lack the ecosystem support and testing of Symfony’s version. Stick with `symfony/polyfill-php80` for reliability.
Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
hamzi/corewatch
minionfactory/raw-hydrator
hexters/coinpayment
rjcodes/rjcms
act-training/laravel-permissions-manager
alimarchal/laravel-chart-of-accounts
babenkoivan/elastic-scout-driver
mkwebdesign/filament-watchdog-v5
renatomarinho/laravel-page-speed
zedmagdy/filament-business-hours
renatovdemoura/blade-elements-ui
devgeek/beacon-admin
benjamin-rqt/data-watcher-bundle
atriumphp/atrium
sandermuller/package-boost-laravel
sandermuller/boost-skills
redaxo/core
yusufgenc/filament-api-forge
l3aro/rating-star-for-filament
leek/filament-subtenant-scope