← Zurück zu Patch
AgentPatch
1. Inspect PHP Runtime vs.
1. Scoped
PHP- und Composer-Updates
Aktualisiert PHP-Abhängigkeiten innerhalb realer Laufzeit- und Ökosystemgrenzen mit gezielten Composer-Lockfileänderungen.
composer-php-upgrades
Entdecke, wie der Skill hilftWann ist der Skill hilfreich?
Nutze dies für PHP-Paketupdates, die mit deiner produktiven Laufzeit kompatibel bleiben müssen.
Wobei hilft er dir?
- Vergleicht tatsächliche PHP- und Erweiterungsversionen mit Composer-Plattformvorgaben.
- Diagnostiziert Abhängigkeitsblocker und aktualisiert nur die vorgesehene gekoppelte Paketfamilie.
- Prüft Lockfile, Autoloading, Frameworkkonfiguration und betroffene Analysewerkzeuge.
Das könntest du fragen
Plane ein Laravel-Paketupdate für unsere produktive PHP-Version ohne Umgehung der Plattformanforderungen. Prüfe den vorgeschlagenen Abhängigkeitssatz mit den tatsächlichen PHP-Erweiterungen. Benenne blockierende Versionsgrenzen und teste nach der Installation den betroffenen Anwendungspfad.
Ausführliche Dokumentation
Hier findest du die ursprüngliche Anleitung, Beispiele und Prüfschritte des Skills in ihrer Originalsprache.
Weniger anzeigen
Composer & PHP Upgrades
When to Use
Use when upgrading PHP libraries, frameworks (Laravel, Symfony, Doctrine, Filament, Livewire, Pest/PHPUnit, PHPStan/Psalm), or PHP runtime targets via composer.json and composer.lock.
Platform & Constraint Discovery
1. Inspect PHP Runtime vs. config.platform
- Check both
require.php(e.g.,"^8.2","~8.3.0") andconfig.platform.phpincomposer.json, alongsideDockerfile/docker-compose.yml/ CI matrix PHP versions and required PHP extensions (ext-intl,ext-gd,ext-redis,ext-imagick,ext-pcntl,ext-bcmath,ext-sodium). - Warning:
config.platform.phptells Composer to emulate a specific PHP version when resolvingcomposer.lockeven if the local CLI runs a newer PHP version. Always keepconfig.platformaligned with the lowest production PHP runtime, and never use--ignore-platform-reqs(--ignore-platform-req=php) to force an incompatible package intocomposer.lock.
2. Trace Dependency Blockers Before Updating
Use Composer's built-in solver diagnostics before changing constraints:
composer why <vendor/package>(depends): Shows which direct or transitive packages require the installed package.composer why-not <vendor/package> <target-version>(prohibits): Shows the exact version constraint chain (PHP version, sibling package, or rootcomposer.json) blocking the upgrade.composer outdated --direct: Lists outdated direct dependencies and indicates semver-safe vs. major updates.
Controlled Update Execution
1. Scoped composer update Commands
- Never run a bare
composer updateacross the whole project when upgrading a specific library—that recalculates and bumps every unlocked package incomposer.lock. - Always scope updates to the target package and its coupled dependents:
composer update vendor/package --with-all-dependencies(-W)- For coupled framework families (e.g.,
symfony/*,illuminate/*,spatie/*), pass all related packages together:composer update "symfony/*" --with-all-dependencies.
- Validate manifest integrity with
composer validate --strict.
2. Framework & Ecosystem Upgrade Nuances
- Laravel (
laravel/framework):- Upgrade coupled first-party packages in lockstep (
laravel/sanctum,laravel/horizon,laravel/passport,laravel/cashier,laravel/octane,laravel/pint,nunomaduro/collision,pestphp/pest/phpunit/phpunit). - Check
composer.jsonscripts (@php artisan package:discover --ansi,@php artisan vendor:publish), middleware registration (bootstrap/app.phpin Laravel 11+ vsapp/Http/Kernel.php), Eloquent cast/model signature changes, and published config files (config/*.php).
- Upgrade coupled first-party packages in lockstep (
- Symfony (
symfony/*):- Check
extra.symfony.requireincomposer.json(which restricts Symfony Flex recipes andsymfony/*component versions!). Updatingrequirewithout updatingextra.symfony.requirecauses solver failures. - Check Symfony Flex recipe diffs (
composer recipes,composer recipes:update) for updated bundle configs (config/packages/*.yaml) and DI container deprecations (bin/console debug:container --deprecations).
- Check
- Static Analysis & Tests (
phpstan/phpstan,larastan/larastan,vimeo/psalm,phpunit/phpunit,pestphp/pest):- PHPUnit major upgrades (e.g., PHPUnit 9 $\rightarrow$ 10 $\rightarrow$ 11) replace docblock annotations (
@test,@dataProvider) with PHP 8 attributes (#[Test],#[DataProvider]), tightenphpunit.xmlschemas (phpunit --migrate-configuration), and make data provider methodsstatic. - When upgrading PHPStan/Larastan, fix newly surfaced type errors in application code rather than bloating
phpstan-baseline.neon.
- PHPUnit major upgrades (e.g., PHPUnit 9 $\rightarrow$ 10 $\rightarrow$ 11) replace docblock annotations (
3. Composer Plugins, Patches & Autoloading
- Check
config.allow-pluginswhen a new plugin package is introduced. - If
cweagans/composer-patchesis used, verify whether each.patchfile still applies cleanly or was merged upstream. - Always run
composer dump-autoload --strict-psr(or--optimize) and verify zero PSR-4 autoloading warnings.
Enthaltene Dateien 1
SKILL.md
