預(yù)計(jì)更新時(shí)間:小于1小時(shí)
更新 bootstrap/autoload.php
中的變量 $compilePath:
$compiledPath = __DIR__.'/cache/compiled.php';
在 bootstrap
目錄中,創(chuàng)建 cache
目錄,在該目錄中創(chuàng)建一個(gè) .gitignore
文件,編輯文件內(nèi)容如下:
*!.gitignore
該目錄應(yīng)該是可寫的,用來存儲(chǔ)臨時(shí)優(yōu)化文件如 compiled.php
,routes.php
,config.php
以及 service.json
在配置文件 config/app.php
中,添加 Illuminate\Broadcasting\BroadcastServiceProvider
到 providers
數(shù)組。
如果你在使用 Laravel 自帶的 AuthenticatesAndRegistersUsers
的 AuthController
,則需要對新用戶的驗(yàn)證和創(chuàng)建做一些代碼改動(dòng):
首先,你不再需要傳遞 Guard
和 Register
實(shí)例到構(gòu)造函數(shù),你可以從控制器的構(gòu)造器中完全移除這些以依賴。
然后,Laravel 5.0 中使用的 App\Services\Registrar
不再被需要,你可以直接簡單拷貝粘貼其中的 validator
方法和 create
方法到 AuthController
中,這兩個(gè)方法中的代碼不需要做任何改動(dòng)。不要忘記確認(rèn) Validator
和 User
在 AuthController
中是否已經(jīng)被導(dǎo)入。
PasswordController
不再需要在構(gòu)造函數(shù)中聲明任何依賴,可以移除5.0中要求的兩個(gè)依賴。
如果你重寫了 Controller
類中的 formatValidationErrors
方法,需要將類型提示由 Illuminate\Validation\Validator
改為 Illuminate\Contracts\Validation\Validator
。
create 方法
Eloquent 的 create
方法現(xiàn)在可以不傳入任何參數(shù)進(jìn)行調(diào)用,如果你在模型中要重寫 create
方法,將 $attributes
參數(shù)的默認(rèn)值改為數(shù)組:
public static function create(array $attributes = []){
// Your custom implementation
}
find 方法
如果你要在自己的模型中重寫 find
方法并在其中調(diào)用 parent::find()
,應(yīng)該改由調(diào)用 Eloquent 查詢構(gòu)建器的 find
方法:
public static function find($id, $columns = ['*']){
$model = static::query()->find($id, $columns);
// ...
return $model;
}
lists 方法
lists
方法現(xiàn)在返回一個(gè) Collection
實(shí)例而不是包含 Eloquent 查詢結(jié)果的數(shù)組,如果你想將 Collection 轉(zhuǎn)化為數(shù)組,使用 all
方法:
User::lists('id')->all();
注意:Query Builder 的 lists 返回的仍然是數(shù)組。
日期格式化
以前,模型中的 Eloquent 日期字段存儲(chǔ)格式可以通過重寫 getDateFormat
方法來修改,現(xiàn)在依然可以這么做;但是為了更加方便可以在模型中簡單通過指定 $dateFormat
屬性來替代重寫方法。
在序列化模型到數(shù)組或 JSON 時(shí)日期格式也被應(yīng)用到,當(dāng)從 Laravel 5.0 遷移到5.1時(shí),這將會(huì)改變 JSON 序列化的日期字段的格式。想要在序列化模型中設(shè)置指定的日期格式,你可以在模型中重寫 serializeDate(DateTime $date)
方法,這樣就可以在不改變字段存儲(chǔ)格式的情況下對格式化序列化的 Eloquent 日期字段有著更加細(xì)粒度的控制。
sortBy 方法現(xiàn)在返回一個(gè)新的 collection 實(shí)例而不是改變已有的 collection:
$collection = $collection->sortBy('name');
groupBy
方法現(xiàn)在為每個(gè)父級 Collection 中的 item 返回 Collection 實(shí)例,如果你想要將這些 items 轉(zhuǎn)化為數(shù)組,可以通過 map
方法實(shí)現(xiàn):
$collection->groupBy('type')->map(function($item){
return $item->all();
});
lists 方法現(xiàn)在返回一個(gè) Collection 實(shí)例而不是數(shù)組,如果你想要將 Collection 轉(zhuǎn)化數(shù)組,使用 all 方法:
$collection->lists('id')->all();
app/Commands
目錄現(xiàn)在被重命名為 app/Jobs
,但是并不需要將你的命令移動(dòng)到新位置,你可以繼續(xù)使用 make:command
和 handler:command
Artisan 命令生成自己的類。
同樣的,app/Handlers
目錄被合并到 app/Listeners
目錄下,你也不必將已經(jīng)存在的命令和事件處理器進(jìn)行移動(dòng)和重命名,你可以繼續(xù)使用 handler:event
命令生成事件處理器。
通過提供對 Laravel 5.0 目錄結(jié)構(gòu)的向后兼容,你可以無縫升級應(yīng)用到 Laravel 5.1 然后慢慢升級你的事件和命令到新的位置——在一個(gè)對你或你的團(tuán)隊(duì)合適的時(shí)間。
createMatcher
,createOpenMatcher
和 createPlainMatcher
方法已經(jīng)從 Blade 編譯器中移除,可以使用新的 directive
方法來為5.1版的 Blade 創(chuàng)建自定義的指令。查閱擴(kuò)展 Blade 文檔了解詳情。
在 tests/TestCase.php 文件中新增 protected 屬性 $baseUrl:
protected $baseUrl = 'http://localhost';
用于為 vendor 包發(fā)布語言文件的默認(rèn)目錄做了移動(dòng),所有 vendor 包語言文件從 resources/lang/packages/{locale}/{namespace}
移動(dòng)到了 resources/lang/vendor/{namespace}/{locale}
目錄。例如,Acme/Anvil
包的 acme/anvil::foo
英語語言文件將會(huì)從 resources/lang/packages/en/acme/anvil/foo.php
移動(dòng)到 resources/lang/vendor/acme/anvil/en/foo.php
。
如果你正在使用 AWS SQS 隊(duì)列驅(qū)動(dòng)或者 AWS SES 電子郵件驅(qū)動(dòng),需要升級 AWS PHP SDK 到3.0版本。
如果你正在使用 Amazon S3 文件系統(tǒng)驅(qū)動(dòng),需要通過 Composer 升級相應(yīng)的文件系統(tǒng)包:
league/flysystem-aws-s3-v3 ~1.0
以下 Laravel 特性已經(jīng)被廢棄并且會(huì)在2015年12月份的 Laravel 5.2 中被完全移除:
Illuminate\Contracts\Routing\Middleware
,中間件中不再需要任何 contract,Illuminate\Contracts\Routing\TerminableMiddleware
被廢棄,在中間件中定義一個(gè) terminate 方法替代實(shí)現(xiàn)該接口。Illuminate\Contracts\Queue\ShouldBeQueued
被廢棄,使用 Illuminate\Contracts\Queue\ShouldQueue
Illuminate\Foundation\Bus\DispatchesCommands
trait 被廢棄并被重命名為 Illuminate\Foundation\Bus\DispatchesJobs
.Illuminate\Container\BindingResolutionException
被移動(dòng)到 Illuminate\Contracts\Container\BindingResolutionException
.bindShared
方法被廢棄,使用 singleton
方法。pluck
方法被廢棄并重命名為 value
.fetch
方法被廢棄,使用 pluck
方法.array_fetch
幫助函數(shù)被廢棄, 使用 array_pluck