首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在同一个项目中使用Yii1和Yii2

在同一个项目中使用Yii1和Yii2
EN

Stack Overflow用户
提问于 2015-09-28 05:21:06
回答 1查看 2.2K关注 0票数 8

我在Yii1.x中有一个项目,现在我在相同的项目中使用Yii2

项目层次结构如下所示

代码语言:javascript
复制
Project1(yii1)/all yii files +  project2(yii2)

project2(yii2)/frontend + /common + /backend

现在我想知道是否可以在project2/common/models中使用project1/protected/controllers

我怎样才能完成这项任务?

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-09-28 06:04:51

我不建议这样做,相反,最好用Yii2完全重写旧的应用程序。

但如有部分迁移,请参阅官方指南中专题部分的this paragraph

下面是一些重要的代码片段:

1)条目脚本的修改:

代码语言:javascript
复制
// 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类的组合:

代码语言:javascript
复制
$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类的用法:

代码语言:javascript
复制
echo get_class(Yii::app()); // outputs 'CWebApplication'
echo get_class(Yii::$app);  // outputs 'yii\web\Application'
票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32816134

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档