symfony/http-kernel). Direct integration into Laravel’s ecosystem (e.g., service providers, event listeners) would require abstraction layers or custom adapters.Messenger component to trigger deploy/undeploy events. Laravel’s event system (e.g., Deploying, Deployed) could theoretically mirror this, but the bundle’s hard dependency on Symfony’s DI container complicates cross-framework reuse.artisan deploy:post-copy, Forge/Envoyer hooks), but this bundle offers Symfony-specific optimizations (e.g., symlink change detection via SCRIPT_FILENAME).DeploymentEvent into Laravel’s event system or console commands. Key challenges:
MessageBus.Deploying event and dispatches Symfony-style messages via a custom queue worker.php artisan atoolo:deploy-hooks).| Risk Area | Severity | Mitigation Strategy |
|---|---|---|
| Framework Mismatch | High | Abstract Symfony dependencies via interfaces. |
| Event System Gaps | Medium | Map Symfony events to Laravel’s events:dispatch. |
| Performance Overhead | Low | Benchmark symlink detection vs. Laravel’s native Storage::link(). |
| Maintenance Burden | Medium | Isolate bundle in a microservice or use a facade. |
Why Symfony?
Deployment Workflow
Long-Term Viability
spatie/laravel-deployer) with lower integration risk?Testing & Debugging
| Laravel Component | Bundle Dependency | Integration Path |
|---|---|---|
| Service Container | Symfony DI | Use Laravel’s SymfonyContainer facade. |
| Event System | Symfony Messenger | Queue messages as Laravel jobs. |
| Configuration | YAML/XML | Convert to Laravel’s config/atoolo.php. |
| Console Commands | Symfony Console | Proxy via Laravel’s Command class. |
Phase 1: Proof of Concept
Deploying events.1.0.0.md) as a standalone PHP class.Phase 2: Adapter Layer
DeploymentEvent.Messenger with Laravel’s Bus or Queue.config/ directory.Phase 3: Full Integration
atoolo:deploy).symfony/http-kernel (v6.3+) may suffice, but full DI compatibility requires testing.storage/logs/laravel.log.Storage::link()).Messenger) may increase composer.json complexity.Messenger for critical deployments could create vendor-specific support issues.SCRIPT_FILENAME method may be less efficient than Laravel’s Storage API.Messenger via Laravel’s queue system could add serialization latency.Deploying event.| Scenario | Impact | Detection | Recovery |
|---|---|---|---|
| Symfony DI Container Crash | Laravel app fails to boot | Laravel logs + Symfony exceptions | Rollback to pre-integration state |
| Queue Worker Stalls | Post-deploy tasks hang | Laravel Horizon/Supervisor alerts | Restart queue workers |
| Symlink Detection Bug | Partial deployments | Bundle’s e2e-test workflow |
Manual symlink verification |
| Configuration Merge Conflicts | Bundle overrides Laravel configs | CI/CD pre-deploy validation | Use Laravel’s mergeConfigFrom |
How can I help you explore Laravel packages today?