从Laravel 4迁移到Laravel 5:循序渐进指南
Laravel 5 已经发布,但人们对变化的恐惧依然存在。我们不断听到人们抱怨一些重大的改变,例如新的文件夹结构。我的应用如果执行composer update
会崩溃吗?
本文将指导您如何将现有的Laravel 4应用迁移到Laravel 5,并了解新的文件夹结构。
关键要点
- 从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中文网其他相关文章!

本文讨论了PHP中的crypt()和password_hash()之间的差异,以进行密码哈希,重点介绍其实施,安全性和对现代Web应用程序的适用性。

文章讨论了通过输入验证,输出编码以及使用OWASP ESAPI和HTML净化器之类的工具来防止PHP中的跨站点脚本(XSS)。

自动加载PHP会在需要时自动加载类文件,从而通过减少内存使用和增强代码组织来提高性能。最佳实践包括使用PSR-4和有效组织代码。

本文讨论了在PHP中管理文件上传大小的管理,重点是2MB的默认限制以及如何通过修改PHP.INI设置来增加它。

本文讨论了PHP 7.1中引入的PHP中的无效类型,允许变量或参数为指定类型或NULL。它突出显示了诸如提高可读性,类型安全性和明确意图的好处,并解释了如何声明

本文讨论了unset()和unlink()功能在编程中的差异,重点关注其目的和用例。 unset()从内存中删除变量,而unlink()从文件系统中删除文件。两者都对效率至关重要


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

螳螂BT
Mantis是一个易于部署的基于Web的缺陷跟踪工具,用于帮助产品缺陷跟踪。它需要PHP、MySQL和一个Web服务器。请查看我们的演示和托管服务。

EditPlus 中文破解版
体积小,语法高亮,不支持代码提示功能

SublimeText3 英文版
推荐:为Win版本,支持代码提示!

SublimeText3 Linux新版
SublimeText3 Linux最新版

记事本++7.3.1
好用且免费的代码编辑器