asaliev / symfony-yii2-bridge
Installs: 0
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 1
Forks: 0
Open Issues: 0
Type:symfony-bundle
Requires
- php: >=7.4 || ^8.0
- symfony/framework-bundle: ^5.4 | ^6 || ^7
- symfony/messenger: ^5.4 | ^6 || ^7
- yiisoft/yii2: ^2.0
Requires (Dev)
- phpstan/phpstan: ^2.1
- phpstan/phpstan-phpunit: ^2.0
- phpstan/phpstan-symfony: ^2.0
- phpunit/phpunit: ^9.5
- squizlabs/php_codesniffer: ^3.12
- symfony/phpunit-bridge: ^7.2
- yidas/yii2-composer-bower-skip: ^2.0
This package is auto-updated.
Last update: 2025-05-08 18:54:05 UTC
README
This bundle was created as part of a workshop presentation for my team. The goal was to tackle a hypothetical scenario where we needed to migrate a legacy Yii2 application to Symfony incrementally. It is not intended to be a production-ready plugin but serves as an example of how such a migration could be approached.
Supports PHP 7.4+ and Symfony 5.4+.
Overview
- Registers Yii2 routes with Symfony routing component.
- Dispatches Yii2 routes to Yii2 Application.
- Yii2 Application is executed via a message bus, keeping the Yii2 application lifecycle intact.
Installation
- Install the package via Composer:
composer require asaliev/symfony-yii2-bridge
- Register the bundle in your Symfony application:
// config/bundles.php return [ // Other bundles... Asaliev\Yii2Bridge\Yii2Bundle::class => ['all' => true], ];
- Register the yii2 route type in your Symfony application:
# config/routes.yaml yii2_routes: resource: . type: yii2_routes
- Configure the bundle in your Symfony application:
# config/packages/yii2.yaml web_config_path: '%kernel.project_dir%/path/to/web.php' messenger_bus: 'yii.app.bus' # Optionally override the default Yii2 container class with an adapter which checks whether a service is registered in the Symfony container first. # Otherwise you may provide your own implementation of `yii\di\Container`. #override_yii_container_class: 'Asaliev\Yii2Bridge\Application\PsrPreferredContainerAdapter'
- Configure the Yii2 message bus in your Symfony application:
# config/packages/messenger.yaml framework: messenger: buses: # ...Other configs yii.app.bus: middleware: - App\Middleware\SomeExtraMiddleware
- In the Yii2 configuration file, update the Request class to use
Asaliev\Yii2Bridge\Http\HeaderlessResponse
instead of the defaultyii\web\Request
. This is necessary because Yii2 will output headers and cookies before we have a chance to halt it's output.
# path/to/yii2/web.php return [ // ... 'components' => [ // ... 'response' => [ // ... 'class' => HeaderlessResponse::class, ], ];
License
This project is licensed under the MIT License. See the LICENSE file for details.