I would not recommend doing this; instead, itβs better to completely rewrite the old application in Yii2.
But in case of partial migration, please read this item in the section on special topics in the Official Guide.
The following are some important snippets of code:
1) Modification of the script entry:
// include the customized Yii class described below require(__DIR__ . '/../components/Yii.php'); // configuration for Yii 2 application $yii2Config = require(__DIR__ . '/../config/yii2/web.php'); new yii\web\Application($yii2Config); // Do NOT call run() // configuration for Yii 1 application $yii1Config = require(__DIR__ . '/../config/yii1/main.php'); Yii::createWebApplication($yii1Config)->run();
2) The combination of classes Yii :
$yii2path = '/path/to/yii2'; require($yii2path . '/BaseYii.php'); // Yii 2.x $yii1path = '/path/to/yii1'; require($yii1path . '/YiiBase.php'); // Yii 1.x class Yii extends \yii\BaseYii { // copy-paste the code from YiiBase (1.x) here } Yii::$classMap = include($yii2path . '/classes.php'); // register Yii 2 autoloader via Yii 1 Yii::registerAutoloader(['Yii', 'autoload']); // create the dependency injection container Yii::$container = new yii\di\Container;
Using the Yii class:
echo get_class(Yii::app()); // outputs 'CWebApplication' echo get_class(Yii::$app); // outputs 'yii\web\Application'
arogachev
source share