支持两种PHP MVC模式的双路由

支持两种PHP MVC模式的双路由,php,laravel,url-routing,legacy-code,Php,Laravel,Url Routing,Legacy Code,我有一个遗留框架,它是php,我一直在做同样的事情,并考虑了一些解决方案,尽管我不理解您所说的“遗留路由是:/controller/action”是什么意思 我想说,让Laravel占据主导地位的最好方法是让所有请求都通过Laravel,并在路由的末尾 Route::any('{all}', function($uri) { // Do stuff })->where('all', '.*'); 在catch-all中,您希望加载遗留路由,这可能涉及includes或其他内容

我有一个遗留框架,它是php,我一直在做同样的事情,并考虑了一些解决方案,尽管我不理解您所说的“遗留路由是:/controller/action”是什么意思

我想说,让Laravel占据主导地位的最好方法是让所有请求都通过Laravel,并在路由的末尾

Route::any('{all}', function($uri)
{
    // Do stuff
})->where('all', '.*'); 
在catch-all中,您希望加载遗留路由,这可能涉及includes或其他内容

通过这样做,你的应用程序将运行在你所有的Laravel路线上,如果没有一条路线与之匹配,它将假定这是一条传统路线

这样做的缺点是,您对遗留代码的所有请求都会不必要地加载Laravel

另一种解决方案是使用htaccess加载legacy或laravel(如果您的站点没有SEO友好的URL,效果最好),或者将逻辑放入app/start/global.php中,以决定此请求是否应继续加载laravel或加载legacy


希望这有帮助,请随时发布更多信息

如果有可能使用URI技巧,它将对您有很大帮助。比如:

Route::group(array('prefix'=>'-'), function() {

 Route::get('/new-framework-route', 'NewController@action');

});

因此,任何以
-
开头的请求都将转到新框架,即
/-/users/
等。否则,旧框架将处理它。

您好-感谢您的输入。我更新了问题,以解释与laravel相比的“遗留路由”。更改.htaccess是一个混乱的考验,最好避免这样做。添加了关于遗留代码的信息后,您可以更详细地阐述一下您的根。tks.基于传统的路由信息,我想说你应该包含引用引导和加载类等的index.php,应该非常简单,但正如我上面所说的,这意味着你在每个请求中都加载了Laravel,如果我猜你在每个请求中都看到一个额外的.4s(完全猜测)考虑到您需要路由来解决其遗留问题,您会在app/start/global中加入什么样的逻辑来防止从遗留问题的角度使用laravel。这是一个困难的问题,当我在寻找自己的项目时,我可以看到是否存在一个文件,一个方法可以告诉控制器是否存在一个方法,如果是这样,请使用legacy and die,否则继续。我不认为时间会太重要,但如果你的网站需要尽快,这是值得注意的。如果您想使用与旧版相同的Laravel路由和Laravel路由覆盖旧版,最好将您的逻辑包含在routes.phpin中。换句话说,如果您知道旧路由是/controller/action,请检查控制器是否实际存在(即旧版)死吧,用legacy而不是laravel-这会阻止laravel先加载,在这种情况下,尽管laravel是它检查的第一件事,但还是让laravel成为backburner。这不会起作用,因为在我的新框架中,我会坚持使用奇怪的URI。然后,你可以将前缀更改为你的任何内容选择,如果有选择的话。