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
Can I use symfony/polyfill-php80 in Laravel 8 (PHP 7.4) to adopt PHP 8.0+ features like `str_contains` or `match` expressions?
Yes, this polyfill works seamlessly with Laravel 8+ (PHP 7.4+). It backports PHP 8.0+ features like `str_contains`, `Stringable`, and `match` expressions, allowing you to use modern syntax without upgrading PHP. No Laravel-specific configuration is needed—just install via Composer and autoloading handles the rest.
Will this polyfill break my existing Laravel application if I install it?
No, the polyfill is non-invasive and only activates missing PHP 8.0+ features. It won’t alter Laravel’s core or require changes to your codebase. However, test thoroughly in a staging environment, especially if you rely on third-party libraries that might override polyfilled functions like `str_contains`.
How do I install symfony/polyfill-php80 in a Laravel project?
Run `composer require symfony/polyfill-php80` in your project root. The package adheres to PSR-4 autoloading, so no additional configuration in `composer.json` or Laravel’s `config/app.php` is required. It works out of the box with Laravel’s default setup.
Does this polyfill support Laravel 9 or 10, which require PHP 8.0+?
While Laravel 9/10 require PHP 8.0+, this polyfill is still useful if you’re running a lower PHP version (e.g., 7.4) but want to test or adopt PHP 8.0+ features incrementally. It won’t replace a PHP upgrade but enables compatibility with modern Laravel features during migration.
Are there any performance concerns with using this polyfill in production?
The polyfill introduces minimal overhead (~100KB autoload impact), typically under 1% in most applications. For performance-critical paths (e.g., financial calculations with `fdiv`), benchmark using tools like Blackfire or Xdebug. Avoid polyfilled functions in hot loops if native PHP 8.0+ is an option.
What happens if a third-party Laravel package already defines `str_contains` or `Stringable`?
Conflicts can occur if another library defines the same functions or interfaces. Audit your dependencies using `composer show --tree` or tools like PHPStan to identify overlaps. If conflicts exist, refactor or patch the conflicting library, or use runtime checks (e.g., `if (function_exists('str_contains'))`) to conditionally load polyfills.
Can I use `match` expressions with this polyfill, or do I need PHP 8.0+?
This polyfill backports `UnhandledMatchError` and related features, so you can use `match` expressions in PHP 7.4+. However, complex `match` logic (e.g., exhaustive patterns) may not behave identically to PHP 8.0+. Test thoroughly, especially for edge cases like `UnhandledMatchError` handling.
How do I remove this polyfill if I upgrade to PHP 8.0+ later?
Simply run `composer remove symfony/polyfill-php80`. Replace any polyfill-specific logic (e.g., `instanceof Stringable`) with native PHP 8.0+ calls. Use tools like `grep` to find polyfill usages before removal. The refactoring is minimal since the polyfill mimics native behavior.
Are there alternatives to symfony/polyfill-php80 for Laravel?
Other polyfill options include `ramsey/uuid` (for specific features) or custom implementations, but Symfony’s polyfills are the de facto standard in the PHP ecosystem. They’re battle-tested, actively maintained, and integrated with Laravel’s dependency management. Avoid reinventing the wheel unless you have specific compatibility needs.
Does this polyfill work with Laravel’s testing tools like Pest or PHPUnit?
Yes, the polyfill works transparently with Laravel’s testing tools. No additional setup is required for Pest, PHPUnit, or Laravel’s built-in testing. However, test edge cases like `UnhandledMatchError` or `ValueError` explicitly, as polyfilled behavior may differ slightly from native PHP 8.0+ implementations.
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.
nexmo/api-specification
capell-app/block-library
axium/identity
cetria/laravel-dummy-models
cetria/reflection-helper
agropredict/sso-auth-bundle
evolvestudio/spam-protection
datacore/hub-sdk
develia/commons
cuci/prototurk-sdk
cuci/prototurk-sdk-symfony
develia/geo-bundle
dreamzy/livewire-charts
touchestate-sdk/php-sdk
ecotone/kafka
22h/doctrine-garbage-collection-bundle
agtp/agtp-php
agtp/mod-php
splash/sonata-admin
splash/metadata