我的同事和我的团队决定在Yii中重写遗留应用程序,但管理层有一个严格的政策,所有功能必须保持不变,所以我们必须使用旧模块,直到它们被移植到Yii,这些模块是以程序方式编写的,并且每个模块都有一个包含在一般index.php中的php文件。一般index.php做了三件事:
一旦我们开始使用Yii,我们如何使用旧模块?
我们已经查看了URL Management并且逻辑非常简单:如果url与旧模块匹配,请使用renderFile()渲染它,否则让Yii工作,但我们不知道是否这是最好的方法。
在开始这个过程之前我们应该考虑其他什么吗?
我想知道URLManagement + renderFile()是否可行?
答案 0 :(得分:1)
确实可以使用URL处理,但是我只是编写一个自定义URL规则类而不是使用大量的路由,因为你的配置会很乱。
如果您想要一些其他建议:
首先,拆分创建应用程序及其执行
require_once($yii);
Yii::createWebApplication($config);
// If you want to run the app:
Yii::app()->run();
通过这种方式,您可以完全控制应用程序是否实际运行。
至于DB。如果你使用的是PDO,那么你很幸运。我会以常规方式给Yii一个db组件,然后修改general.php以使用来自Yii的PDO实例(Yii :: app() - > db-> pdoInstance)。它将始终加载,以便应该工作。如果您不使用PDO,只需使用2个连接,除非您有很多访问者,否则它并不是那么糟糕。
关于会话,不应该有那么多的初始化,所以除非你有自定义处理程序,否则也将其移动到Yii。无论如何,这些功能都是一样的,所以应该没有太多问题。
然后我认为有两种做事方式:
1)general.php先行。
您必须在旧文件中创建模块列表,并确定当前请求的模块是否已迁移。基本上将仍然在general.php中的模块名称放在一个数组中,看看url是否需要其中一个并包含general.php(并且不要执行Yii :: app() - > run())。其余的通过Yii。
2)Yii先走了。
让yii做它的魔力,但拦截404 http异常。使用自定义错误处理函数(http://www.yiiframework.com/doc/guide/1.1/en/topics.error)可以轻松完成此操作。如果再次进入错误函数:确定它是否是有效的遗留模块并包含general.php。
两种方式都非常混乱但至少像这样你有机会迁移一个模块,同时将其余模块保留在旧文件中。
答案 1 :(得分:0)
取决于Size ,complexity and Person Months
软件对于做出任何决定至关重要。当然,建议使用homogeneous
性质而不是heterogeneous
性质是非常明智的。如果您上面提到的模块是您要转换的模块,我建议您必须在Yii中使用RE-DO,因为Yii具有强大的ORM
模块非常容易制作。
我建议您选择RE-Do
以下可能对您有意义 How do you convert an old OOP PHP project into the Yii Framework?