common-gateway/t-junction-bundle
symfony/http-foundation for request handling) or a Laravel wrapper layer. Risk: Laravel’s service container and routing differ from Symfony’s, requiring abstraction.Illuminate\Routing for request matching.Illuminate\Events) for plugin hooks.DependencyInjection, HttpKernel) would need replacements or shims. Example: TJunctionBundle’s PluginManager would require a Laravel-compatible rewrite.commongateway:install command), integration would require:
Artisan commands.| Risk Area | Severity | Mitigation Strategy |
|---|---|---|
| Symfony → Laravel Port | High | Abstract core routing logic; use Laravel’s Pipeline or Middleware for compatibility. |
| Plugin Discovery | Medium | Replace Symfony’s PluginManager with a Laravel ServiceProvider-based registry. |
| Schema Installation | High | Rebuild commongateway:install as a Laravel command using Schema::create() or migrations. |
| Dependency Bloat | Medium | Audit Symfony dependencies; replace with Laravel equivalents (e.g., symfony/console → laravel/framework). |
| Testing Overhead | High | Write adapter tests for Symfony ↔ Laravel boundaries. |
PluginManager and schema system?Illuminate\Contracts\Routing\Registrar for dynamic routes.symfony/http-client, symfony/console).| Component | Laravel Equivalent | Notes |
|---|---|---|
Symfony HttpKernel |
Laravel HttpKernel (via illuminate/http) |
Use app()->make('router') for routes. |
DependencyInjection |
Laravel ServiceContainer |
Replace ContainerInterface with Illuminate\Container. |
PluginManager |
Custom PluginServiceProvider |
Register plugins via boot() method. |
Console Commands |
Laravel Artisan Commands |
Extend Illuminate\Console\Command. |
| Event Dispatcher | Laravel Events |
Use event(new PluginInstalled()). |
Phase 1: Proof of Concept (2–4 weeks)
common-gateway/laravel-t-junction).Router with Laravel’s RouteServiceProvider.PluginManager using Laravel’s ServiceProvider.pet-store-bundle).Phase 2: Schema & Plugin System (3–5 weeks)
commongateway:install as a Laravel Artisan command.composer.json extra.laravel.packages).Phase 3: Admin UI Integration (4–6 weeks)
PluginManager for activation/deactivation.EventDispatcher → Laravel’s Events. Use dispatch() instead of dispatcher->dispatch().@Route with Laravel’s Route::get() or attributes (PHP 8+).config/packages → Laravel’s config/services.php.$this->app->bind('plugin.manager', function ($app) {
return new LaravelPluginManager($app);
});
config('features.t_junction.enabled') to toggle functionality.laravel-ide-helper).symfony/yaml) may add ~5–10MB to vendor dir.Whoops for unified error pages.try-catch in route handlers).## Porting a TJunctionBundle Plugin to Laravel
1. Replace `use Symfony\Component\HttpKernel\...` with `use Illuminate
How can I help you explore Laravel packages today?