首页 > 后端开发 > php教程 > Laravel 4至Laravel 5-简单升级指南

Laravel 4至Laravel 5-简单升级指南

尊渡假赌尊渡假赌尊渡假赌
发布: 2025-02-18 09:05:09
原创
297 人浏览过

从Laravel 4迁移到Laravel 5:循序渐进指南

Laravel 5 已经发布,但人们对变化的恐惧依然存在。我们不断听到人们抱怨一些重大的改变,例如新的文件夹结构。我的应用如果执行composer update会崩溃吗?

本文将指导您如何将现有的Laravel 4应用迁移到Laravel 5,并了解新的文件夹结构。

Laravel 4 to Laravel 5 - The Simple Upgrade Guide

关键要点

  • 从Laravel 4升级到Laravel 5包含多个步骤,包括更新composer.json文件、更新路由、控制器和视图,以及修改任何自定义代码以使用Laravel 5中的新功能和更改。
  • Laravel 5引入了许多新功能和改进,例如新的目录结构、改进的路由、更好的环境配置处理以及新的组件,如Socialite、Elixir和Scheduler。
  • 升级到Laravel 5的过程可能很复杂且耗时,具体取决于应用程序的大小。但是,没有必要升级到新的文件夹结构;您可以保留旧的结构,只更新composer依赖项,但这并不是推荐的做法。

安装

我现有的Laravel 4应用程序是一个之前的关于使用Google Analytics API的文章中的演示程序。该应用程序代码不多,但足以用于我们的教程。

让我们首先在计算机上安装Laravel 5,并创建一个临时文件夹来保存我们的Laravel 4版本的应用程序。

composer create-project laravel/laravel --prefer-dist
登录后复制
登录后复制
登录后复制

我更喜欢通过composer安装Laravel,但您可以访问文档以了解更多关于Laravel安装程序的信息。

您可以使用存储库中的Vagrant虚拟机,或使用Homestead Improved。如果一切顺利,您应该会看到Laravel 5的欢迎页面。

配置文件

旧的app/config文件夹现在位于应用程序的根目录下,因此我们必须将app/config/analytics.php移动到config/analytics.php。凭据直接粘贴到文件中,所以为什么不使用环境变量呢?

// config/analytics.php

return [
  'app_name'          => env('app_name'),
  'client_id'         => env('client_id'),
  'client_secret'     => env('client_secret'),
  'api_key'           => env('api_key')
];
登录后复制
登录后复制
<code>// .env

app_name='YOUR APP NAME'
client_id='YOUR CLIENT ID'
client_secret='CLIENT SECRET'
api_key='API KEY'</code>
登录后复制
登录后复制

.env文件会自动加载,可用于将本地环境配置与生产环境、测试环境等分开。

路由

Laravel 4路由注册在app/routes.php中。在Laravel 5中,所有与HTTP相关的部分都分组在app/Http文件夹下,包括路由,因此让我们将app/routes.php移动到app/Http/routes.php

过滤器

Laravel 5已从过滤器迁移到中间件,因此如果您的路由中包含任何过滤器,请确保将其更改为中间件。

Route::get('/report', ['middleware' => 'auth', function() {
    //
}]);
登录后复制
登录后复制

如果您有自定义过滤器,您可以将其迁移为中间件。我的路由中使用了一个GoogleLogin中间件,实现如下所示。

composer create-project laravel/laravel --prefer-dist
登录后复制
登录后复制
登录后复制
// config/analytics.php

return [
  'app_name'          => env('app_name'),
  'client_id'         => env('client_id'),
  'client_secret'     => env('client_secret'),
  'api_key'           => env('api_key')
];
登录后复制
登录后复制
<code>// .env

app_name='YOUR APP NAME'
client_id='YOUR CLIENT ID'
client_secret='CLIENT SECRET'
api_key='API KEY'</code>
登录后复制
登录后复制

默认情况下会添加CRSF保护中间件。如果要删除它,您可以转到app/Http/Kernel.php文件并注释掉相应的行。

控制器

因为我们的控制器被认为是HTTP逻辑的一部分,我们需要将app/controllers/*移动到app/Http/Controllers并使用App\Http\Controllers命名空间。您需要修复的最后一个问题是将BaseController更改为Controller类。

如果您不喜欢App根命名空间,您可以使用以下artisan命令全局更改它。

Route::get('/report', ['middleware' => 'auth', function() {
    //
}]);
登录后复制
登录后复制

迁移

我们的Google Analytics应用程序没有任何本地数据库交互,但升级过程值得一提。

app/database目录现在位于/database文件夹内,您只需要将文件移动到那里即可。该目录已经包含一个users表和一个password_resets表,您可以根据需要删除或更新它们。

模型

Laravel 4中的models文件夹消失了,Laravel 5直接在app文件夹中放置User模型作为示例。您也可以将您的模型复制到那里,并使用App命名空间。

但是,如果您不喜欢将模型放在那里的想法,您可以在app目录下创建一个名为Models的新文件夹,但不要忘记使用App\Models命名空间为您的类命名空间。

// app/Http/Middleware/GoogleLogin.php

class GoogleLogin
{
  public function handle($request, Closure $next)
  {
    $ga = \App::make('\App\Services\GoogleLogin');
    if (!$ga->isLoggedIn()) {
      return redirect('login');
    }

    return $next($request);
  }
}
登录后复制

应用程序服务

我们的src文件夹包含一个GA_Service和一个GA_Utils类。如果我们认为它们是服务,我们可以将它们放在app/Services中。否则,我们可以创建一个名为app/GA的新文件夹,我们将在此处存储我们的服务类。这将导致问题,因为我们一开始没有使用PSR-4自动加载,因此我们需要使用正确的新的命名空间更新控制器中的类引用。

视图

应用程序视图从app/views文件夹移动到resources/views文件夹。

resources文件夹还包含用于应用程序本地化的lang文件夹,以及用于前端资源的assets文件夹。Laravel 5引入了Elixir,它将Gulp任务运行器适配到Laravel开发环境。

Composer

确保您复制应用程序的composer依赖项并进行任何必要的升级。对于我们的演示,我将把"google/apiclient": "1.1.*"移动到新的composer.json中,并执行composer update以反映这些更改。

表单和HTML

illuminate/html包已从Laravel 5的默认安装中移除,您需要单独安装它。

要将HTML辅助函数带回到您的项目中,您需要将"illuminate/html": "5.0.*"包添加到您的composer.json中并运行composer update,然后您需要将'Illuminate\Html\HtmlServiceProvider'添加到您的config/app.php提供程序数组中。如果您想在blade模板中使用Html和Form外观,您可以将以下外观添加到您的config/app.php外观数组中。

composer create-project laravel/laravel --prefer-dist
登录后复制
登录后复制
登录后复制

结论

升级到Laravel 5的过程的复杂性和持续时间始终取决于您的应用程序的大小,对于您的特定情况,该过程可能比此示例长得多。在本文中,我们试图解释常见的过程,该过程应该可以处理大多数(如果不是全部)需要更改的内容。

您不必升级到新的文件夹结构,您可以保留旧的结构,只更新您的composer依赖项,但这并不是推荐的做法。如果您有任何问题或意见,请务必在下面发布。有关更多信息,请参阅完整的版本升级指南。

Laravel 4到Laravel 5升级指南常见问题解答(FAQs)

Laravel 4和Laravel 5的主要区别是什么?

Laravel 5在Laravel 4的基础上引入了许多新功能和改进。这些包括新的目录结构、改进的路由、更好的环境配置处理以及新的组件,如Socialite、Elixir和Scheduler。Laravel 5还引入了一个新的命令行界面,称为Artisan,它为常见任务提供许多有用的命令。

如何在Laravel 5中处理环境配置?

Laravel 5引入了一种新的环境配置处理方式。Laravel 5不再使用单个.env.php文件,而是为每个环境使用一个.env文件。这使得管理不同环境的不同配置更容易。您可以在.env文件中设置环境变量,Laravel将自动加载它们。

Laravel 5中的新目录结构是什么?

Laravel 5引入了一个新的目录结构,该结构旨在更直观和灵活。app目录现在是应用程序的根目录,它包含应用程序不同部分的几个子目录,例如Http、Providers和Console。public目录现在是Web服务器的根目录,它包含您的资源,例如图像、JavaScript和CSS文件。

如何从Laravel 4升级到Laravel 5?

从Laravel 4升级到Laravel 5包含几个步骤。首先,您需要更新您的composer.json文件以要求最新版本的Laravel。然后,您需要更新应用程序的代码以使用Laravel 5中的新功能和更改。这可能涉及更新您的路由、控制器和视图,以及您编写的任何自定义代码。

什么是Laravel Elixir以及如何使用它?

Laravel Elixir是Laravel 5中的一个新组件,它为定义基本的Gulp任务提供了一个简洁流畅的API。它支持常见的CSS和JavaScript预处理器,如Sass和CoffeeScript,它还提供了一种方便的方法来版本化和连接您的资源。

如何使用Laravel 5中的新路由系统?

Laravel 5引入了一个新的路由系统,它比Laravel 4中的路由系统更灵活和强大。路由现在在app/Http/routes.php文件中定义,您可以对路由进行分组,为它们应用中间件,甚至为它们命名空间。

什么是Laravel Socialite以及如何使用它?

Laravel Socialite是Laravel 5中的一个新组件,它提供了一种简单方便的方法来使用OAuth提供程序进行身份验证。它开箱即用地支持多个流行的提供程序,您还可以添加自己的自定义提供程序。

如何使用Laravel 5中的新Artisan命令?

Laravel 5引入了一个新的命令行界面,称为Artisan,它为常见任务提供许多有用的命令。您可以使用Artisan生成样板代码、运行数据库迁移,甚至启动本地开发服务器。

Laravel 5.0中的新功能是什么?

Laravel 5.0引入了一些新功能,包括新的目录结构、改进的路由、更好的环境配置处理以及新的组件,如Socialite、Elixir和Scheduler。它还引入了一个新的命令行界面,称为Artisan。

如何在Laravel 5中处理数据库迁移?

Laravel 5提供了一个强大的数据库迁移系统,允许您对数据库模式进行版本控制。您可以使用Artisan命令行工具创建迁移,然后使用migrate命令运行它们。这使得在不同环境中应用数据库模式更改变得容易。

以上是Laravel 4至Laravel 5-简单升级指南的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板