Laravel 4.2 升级 Laravel 5.0 攻略 https://phphub.org/topics/474 以下所指L4为laravel 4.2,L5为laravel 5.0 建议如下情况进行升级 对L4比较了解,同时对L5有基本的认识 想对比L4和L5的差异,快速学习L5 程序的代码写的不乱,按照Laravel的基本的默认规则

Laravel 4.2 升级 Laravel 5.0 攻略

https://phphub.org/topics/474

以下所指L4为laravel 4.2,L5为laravel 5.0

建议如下情况进行升级

对L4比较了解,同时对L5有基本的认识

想对比L4和L5的差异,快速学习L5

程序的代码写的不乱,按照Laravel的基本的默认规则来写

有足够的耐心和精力

熟练使用phpstorm,因为这是个规模较大的工程,有个具有代码逻辑分析功能的编辑器,会让你减少不必要的错误,特别是命名空间和引用。如果你还不怎么会用phpstorm,那么先看Be

Awesome in PHPStorm

使用larvel-ide-helper这个插件,不然phpstorm就没有那么智能。(注意生成的_ide_helper.php的版本为L5的)

以下内容部分来自官方文档。由于我建议全部添加命名空间,内容和文档有出入,并有些内容文档未提及

新建L5项目,然后再迁移

新建一个L5项目,新建方法参考这里,然后拷贝L4的文件到新建的项目下面。

拷贝的文件包括:controller, routes, models, Artisan commands, assets, 还有一些你自己添加的类或者资源。

Composer 你的依赖和包

拷贝你添加的所有的composer依赖和包到L5的 composer.json 中,也包括你引用的其他的代码和SDK。

不过需要注意一点就是,你依次去那些针对Laravel开发的包需要到项目主页看看作者是否支持L5或者说准备支持L5,据我所知,目前主流的包基本已支持,因为改动不是特别大。选好支持L5的版本之后, composer

update 就好了。

命名空间 Namespace

L4的命名空间是全局的。虽然官方说能不加命名空间就能迁移,但是还是手动给加上吧!不然以后更麻烦了。提醒一下,有这个方法可以修改命名空间的前缀: php

artisan app:name Yourproj。

如果你的程序中使用了变量作为动态类名,一定要注意在变量中添加完整的命名空间:

# L4中可能存在的写法

$myClassName = 'Dog';

$obj = new $myClassName();// 在L5中将要报错

# L5中要修改为

$myClassName = 'app\\Models\\Dog';

$obj = new $myClassName();

配置文件 Configuration

项目根目录命令行 cp

.env.example .env ,拷贝你自定义的配置到这里,配置文件不再像之前那样有很多文件夹供你根据环境选择了,L5下只有这一个,意思就是每个不同的环境都需要自己来稍微定制一些。不过每个项目下面可能都是不同的。写好配置文件后记得保存个模板到 .env.example 供其他队友使用。

在 config/ 下面开始使用 env('DB_HOST',

'localhost') 的方式来调用你的配置到对应的数组键下面。

路由 routes

拷贝原来的 routes.php 到 app/Http/routes.php

控制器 controllers

拷贝你的 contollers 到 app/Http/Controllers 下。添加正确的命名空间到每个类上App\Http\Controllers 。记得让你的 BaseController 继承那个抽象类 Controller 。然后挨个查看文件,根据PHPstorm提示进行纠错,主要包括引用类和命名空间的错误。

模型 models

新建文件夹到 app/Models,把原来的 models 全部拷贝过来。首先,添加命名空间 App\Models 。接着是关联到其他model的一些方法,比如

belongTo, hasMany等,第一个参数需要填写完整的命名空间,例如

class User extends Eloquent {

public function phone()

{

// return $this->hasOne('Phone'); 原来这样写的 return $this->hasOne('App\Models\Phone'); // L5需要添加完整命名空间 }

}

过滤器 Filters

L5中的中间件 Middleware 是个重头戏,路由 routes.php 中的 ['before'

=> 'auth']需要替换为['middleware'

=> 'auth'] 。

同时还要改一下过滤器Filters:

// app/filters.phpRouter::filter('shall-not-pass', function() {

return Redirect::to('shadow');

});

改成这样子

// app/Providers/RouteServiceProvider@boot()$router->filter('shall-not-pass', function() {

return \Redirect::to('shadow');

});

缓存 Cache

Builder 不再支持 remember 这个方法了,请使用 Cache::remember 对程序改造

。如果使用了 redis,还需要 composer

require 'predis/predis' 。

用户认证 Authentication

按照下面的操作对 User

model 进行升级。

删除下面的内容

use Illuminate\Auth\UserInterface;

use Illuminate\Auth\Reminders\RemindableInterface;

然后添加以下代码:

use Illuminate\Auth\Authenticatable;

use Illuminate\Auth\Passwords\CanResetPassword;

use Illuminate\Contracts\Auth\Authenticatable as AuthenticatableContract;

use Illuminate\Contracts\Auth\CanResetPassword as CanResetPasswordContract;

删除 UserInterface 和 RemindableInterface 这两个接口,然后添加 AuthenticatableContract 和CanResetPasswordContract 这两个接口。

添加以下两个 traits 到类里面

use Authenticatable, CanResetPassword;

如果你用到Illuminate\Auth\Reminders\RemindableTrait和Illuminate\Auth\UserTrait,那么就把他们删掉。

Artisan Commands

直接拷贝你的命令行程序的文件到 app/Console/Cammands 目录,并添加对应命名空间。

接着拷贝 start/artisan.php 内容到 app/Console/Kernel.php 文件的 command 数组中。例如

protected $commands = [

'Laracasts\Console\Commands\ClearHistoryCommand',

'Laracasts\Console\Commands\SignupsReportCommand',

'Laracasts\Console\Commands\WelcomeUserCommand',

];

数据迁移 Database Migrations & Seeds

删除L5 database/migrations 中自带的两个数据迁移文件,然后把你自己原来的数据库迁移文件从app/database/migrations 拷贝到 database/migrations 中来。 app/database/seeds 的文件拷贝到database/seeds 中。

这个操作不需要添加命名空间,因为在 composer.json 中已经引入了该目录。

全局的依赖注入绑定 Global IoC Bindings

如果在 start/global.php 中有ioc绑定的话,那就吧他们移动到 app/Providers/AppServiceProvider.php的 register 方法中。同时还需要引入 App

facade。

视图模板 Views

直接从 app/views 复制到 resources/views 中。

L4中的 {{

}} 对应为L5的 {!!

!!} ,而L4中的 {{{

}}} 对应L5的 {{

}} 。需要对应修改一下。

多语言文件 Translation Files

复制 app/lang 到 resources/lang

Public目录

把你的公共资源都直接拷贝过去吧!

测试文件

复制 app/tests 到 tests 目录。

Form 和 HTML 帮助函数

如果你用了 Form 或者 HTML 帮助函数,那么就在 composer.json 中添加 "illuminate/html":

"~5.0"。

然后在 config/app.php 中添加 'providers' :

'Illuminate\Html\HtmlServiceProvider',

接着在 'aliases' 中添加:

'Form' => 'Illuminate\Html\FormFacade',

'Html' => 'Illuminate\Html\HtmlFacade',

分页

替换 $paginator->links() 为 $paginator->render()。如果你这里使用了分页模板的话,L4是在links中传入分页模板的路径字符串,而L5中render的参数为Illuminate\Contracts\Pagination\Presenter对象,需要根据需要建立一个继承该接口的类。

消息队列

L5对应的 Beanstalk 包为: "pda/pheanstalk":

"~3.0",不再是 "pda/pheanstalk":

"~2.1"

总结

相信你按照上面的步骤执行后,你的程序依然报错。因为自己的项目都可能有一些比较 个性 的地方,所以需要多加细心和耐心来完成纠错。

如果你使用了xdebug的断点调试,可能会让你事半功倍。

遇到问题了欢迎来探讨!

最后祝你 level up !^^

本文原创发布php中文网,转载请注明出处,感谢您的尊重!

laravel4.2 连接mysql_Laravel 4.2 升级 Laravel 5.0 攻略相关推荐

  1. 魔方世界连服务器未响应,为什么魔方世界显示无法连接服务器 | 手游网游页游攻略大全...

    发布时间:2016-07-17 PVP服务器介绍及职业解析 首先这个PVP服务器并不是轻易就可以进去的,很多人知道了服务器地址也进不去..现在我来告诉大家如何进去: 也许有人每次一进去就会断开..其实 ...

  2. 方舟服务器直连服务器无响应,为什么我方舟加入服务器会显示连接超时 | 手游网游页游攻略大全...

    发布时间:2015-09-05 正当防卫3是刚出来的游戏呢,很多玩家都想要玩吧,但是由于这款游戏要全程联网才能够玩呢,很多玩家无法连接服务器,这是咋回事呢,下面看看正当防卫3无法连接服务器怎么办 总是 ...

  3. [南帝北丐]快速升级20级全攻略

    [南帝北丐]快速升级20级全攻略 这个阶段相当简单,前提的引导任务给的经验都相当足,一路下去轻松就能到达14级,同时也能熟悉游戏的基本玩法,建议大家认真做一下.不过这样也就不叫攻略了,只要注意其中的2 ...

  4. 方块方舟服务器维护,方块方舟主机连接超时 | 手游网游页游攻略大全

    发布时间:2015-11-13 unturnde官方服务器我想现在很多玩家都想知道到底出了没有?没出会是在什么时候出?出了之后我们又该怎么进,对于这些问题,大家可以在本站进行搜索便知,另外,我们还是来 ...

  5. 绝地求生手游电脑版连接服务器没有响应,绝地求生电脑版进去为什么连接失败 | 手游网游页游攻略大全...

    发布时间:2017-07-24 在安装或更新游戏时,许多玩家都出现了"无法连接更新服务器"或"应用程序运行中"的情况,那么遇到这些问题该怎么解决呢?下面就为大家 ...

  6. 吃鸡手游服务器响应超时闪退,我玩吃鸡为什么一直连接超时 | 手游网游页游攻略大全...

    发布时间:2016-12-21 cpu 最近虽然英雄联盟s7正在如火如荼地进行着,网络平台上最火的游戏却是绝地求生(吃鸡).但是不同于英雄联盟,吃鸡对于电脑的要求还是比较苛刻的,之前玩lol的主机拿来 ...

  7. 饥荒联机版与服务器中断,为什么玩饥荒玩着玩着与服务器断开连接quest; | 手游网游页游攻略大全...

    发布时间:2015-10-11 很多玩家都说,玩部落战争这款游戏的时候,会出现各种各样的问题,最让人头疼的就是一搜索就出现于服务器断开连接的提示,而且没办法解决,所以小编熊北北就来告诉大家这个问题的原 ...

  8. 彩6一直显示连接服务器,彩虹6号一直服务器连接错误 | 手游网游页游攻略大全...

    发布时间:2015-10-02 疾风之刃开服了,想必有很多玩家已经下好了客户端早早等待开启了吧,可是没想到进去游戏显示无法连接服务器连接错误的提示,这是什么问题呢,应该怎么解决呢,来看看小编熊北北的疾 ...

  9. rust读条闪退_rust更新后无法连接服务器 | 手游网游页游攻略大全

    发布时间:2015-12-25 手游我叫MT2在更新之后呢,有许多玩家反映一直出现卡读条进不去游戏的情况!这可急坏了不少玩家呢!那么我叫mt2更新后卡读条进不去服务器怎么办?下面且看小编给大家带来的我 ...

最新文章

  1. django orm级联_第 03 篇:创建 Django 博客的数据库模型
  2. eclipse集成tomcat运行web时提示引入jar包的类找不到的解决办法
  3. go protobuf tcp 粘包处理 demo
  4. JavaScript快速学习
  5. AutoCAD.NET二次开发注意事项与开发技巧
  6. [leetcode]5170. 验证二叉树
  7. 一文轻松搞懂-条件随机场CRF
  8. 计算机视觉前沿技术探索
  9. 阿拉伯数字金额转换为汉语大写
  10. 线上Request method ‘GET‘ not supported 问题
  11. python中 s是什么意思_这里面的s.name是什么意思啊?
  12. 虚拟机RedHatLinux9安装Oralce92全过程
  13. Nacos搭建集群以及遇到的问题
  14. 利用 Google API 调用谷歌地图 演示1
  15. FFmpeg 中的一些参数意义(tbr, tbn, tbc)
  16. 组合铣床的总体设计和主轴箱设计(论文+DWG图纸)
  17. 播放量超4500万,7天涨粉68万,健身直播或成为下一个流量风口?
  18. 华为Harmony学习(一):编程开发系统搭建
  19. 拉斯维加斯算法与N皇后问题
  20. 【无标题】VMware开启虚拟机提示此主机支持 Intel VT-x,但 Intel VT-x 处于禁用状态。

热门文章

  1. 怎么找回大话西游2的服务器,大话西游2开年重新回归必看 详细回坑攻略助你省事...
  2. [转]猪和鸡的故事—谈谈Scrum敏捷开发中的角色和关系
  3. 联想23亿美元收购IBM X86服务器硬件及服务
  4. Unity 游戏入门 四、 游戏地图的创建World Design – Tilemaps
  5. cad中英文翻译插件使用
  6. 经典网络模型-SENet注意力机制
  7. css部分内容个人知识区汇总
  8. 奥运随笔(2)- 期待另一场伟大的运动和“游戏”
  9. 游戏设计小议 番外篇一 电脑游戏的通用层次结构
  10. 分享两个决策方法WCCA和WADM