geekimo/php-rql
PHP RQL provides a PHP implementation of Resource Query Language for parsing and building expressive API query strings, with support for filters, comparisons, logical operators, sorting, and pagination. Useful for clean, consistent REST query handling.
^8.0 (dropping 7.x). Check the package's composer.json require.php constraint and your app's own constraint before upgrading:
composer require vendor/package:^3.0
composer why-not php 8.0 # surface transitive packages still pinning PHP 7
php artisan vendor:publish --provider="Vendor\Package\PackageServiceProvider"
php artisan migrate # only if the package ships migrations
Then look at, in order: the service provider (what gets bound), the config file (what is tunable), and the package's own test suite (the best documentation of intended usage).$result = app(Vendor\Package\Contracts\Client::class)->ping();
Or write a single feature test. This isolates "does it boot on PHP 8" from "did I integrate it correctly."public function __construct(private Vendor\Package\Contracts\Client $client) {}
AppServiceProvider or a dedicated PackageServiceProvider. This is the primary extension point for most Laravel packages.config/. Move any package env vars into config/package.php and reference them with config('package.key'). Never call env() outside config files — it breaks under config:cache.Queue::fake(), Http::fake(), and RefreshDatabase as appropriate. If the package ships a fake or a testing trait, prefer it over mocking the concrete class.^3.0.php artisan optimize:clear and a fresh opcache.composer.lock and deploy with composer install --no-dev --optimize-autoloader. Major-version compatibility fixes are exactly the kind of release where a transitive dependency can surprise you.null to non-nullable internal function parameters (now deprecated, will become a TypeError).#[AllowDynamicProperties] (deprecated in 8.2).${var} string interpolation (deprecated in 8.2).0 == "foo" and string-to-number comparison semantics.composer update --ignore-platform-reqs is a trap. It lets you install a package that will fatal at runtime. If you are blocked, set config.platform.php in composer.json to your real production version and resolve the conflict properly.php artisan optimize:clear
composer dump-autoload -o
In FPM, restart the pool or call opcache_reset().illuminate/support constraint in the package's composer.json matches your app.composer diagnose, php -v, composer show vendor/package, then php artisan about to confirm the framework sees the expected versions. For runtime errors, php artisan tinker and resolve the class directly to reproduce outside the request lifecycle.extend() method if it exposes one, published config, and package events/listeners. Forking should be the last resort — a fork means you own the PHP 8 compatibility work going forward.How can I help you explore Laravel packages today?