在同一个项目中使用 Yii1 和 Yii2
Using Yii1 and Yii2 in the same project
我在 Yii1.x 有一个项目,现在我正在为相同的项目使用 Yii2
项目层次结构是这样的
Project1(yii1)/all yii files + project2(yii2)
project2(yii2)/frontend + /common + /backend
现在我想知道是否可以在project1/protected/controllers
中使用project2/common/models
我怎样才能完成这个任务?
谢谢
我不建议这样做,相反最好在 Yii2 中完全重写旧应用程序。
但如果是部分迁移,请阅读官方指南中专题部分的this paragraph。
这里有一些重要的代码片段:
1)修改入口脚本:
// 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) Yii
classes 的组合:
$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;
Yii
class的用法:
echo get_class(Yii::app()); // outputs 'CWebApplication'
echo get_class(Yii::$app); // outputs 'yii\web\Application'
我在 Yii1.x 有一个项目,现在我正在为相同的项目使用 Yii2
项目层次结构是这样的
Project1(yii1)/all yii files + project2(yii2)
project2(yii2)/frontend + /common + /backend
现在我想知道是否可以在project1/protected/controllers
project2/common/models
我怎样才能完成这个任务?
谢谢
我不建议这样做,相反最好在 Yii2 中完全重写旧应用程序。
但如果是部分迁移,请阅读官方指南中专题部分的this paragraph。
这里有一些重要的代码片段:
1)修改入口脚本:
// 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) Yii
classes 的组合:
$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;
Yii
class的用法:
echo get_class(Yii::app()); // outputs 'CWebApplication'
echo get_class(Yii::$app); // outputs 'yii\web\Application'