https://github.com/laravel/framework/releases/tag/v5.5.0
こちらを見てある程度丁寧に翻訳しています。途中で諦めたらすみません。
が付いているものは以前のバージョンとの互換性が保証されていないものとか危険そうなものにもついています。
が付いている物は結構重要そうなものです。
言い回しの修正とか、追加の翻訳歓迎してます。
全般
- PHP7以上必須
-
ServiceProvider::compile()
メソッドが削除 -
Str::quickRandom()
メソッドが削除 - laravel/frameworkにあった
build
フォルダが削除(ほぼ関係なし) -
SymfonyComponents
が3.3へアップデート -
APP_KEY
が設定されていない場合のエラー文が分かりやすくなりました
Artisan Console
- マイグレーションをロールバックする際に、もしマイグレーションがない場合のエラーメッセージが変更されました。
- コマンド引数のdefault値に配列を指定できるようになりました。
- phpdbgを利用した際のcli検出が改善されました。
-
vendor:publish
が対話型インターフェースを導入。以前よりもvendor:publish
コマンドが分かりやすくなりました。 -
migrate:fresh
コマンドが追加されました。freshコマンドはdatabaseの中身をdropしてから再migrateするコマンドです。 -
make:factory
コマンドが追加されました。 -
app:name
コマンドで名前空間が変更される範囲に、model factoriesが追加されました。 -
make:model
コマンドのオプションに--factory
が追加されました。 -
make:model
のショートカットオプションである-f
が--force
から--factory
に変更されました。--force
オプションは直接入力が必要になります -
make:rule
コマンドが追加されました。 -
make:migration
コマンドでcreate_xxxx_tableと指定した場合にxxxxの部分が--create
オプションとして推測されるようになりました -
make:policy
コマンドでファイルを作った際の名前空間がconfig('auth.providers.users.model')の名前空間に設定されるようになりました。 -
make:listener
コマンドでイベントの絶対パスを渡しても動作するようになりました。 - ApplicationContractがrunningInConsole()メソッドの実装を強制するようになりました。
-
RetryCommand::getJobIds()
が必ず配列を返すようになりました。 -
fire
メソッドが利用されなくなり、handle
メソッドへ統一されました。この影響で全てのCommandクラスのfireメソッドはhandleメソッドへRenameしなくてはいけません。(#19827, #20024) -
Command::table()
メソッドの第1引数のheadersのarrayタイプヒントが削除され、緩くなりました。 -
CommandStarting
とCommandFinished
イベントが追加されました。これはrunメソッドの前後に配置されています。 -
Kernel:load()
メソッドが追加され、指定したディレクトリパスにあるコマンドファイルを一括で登録出来るようになりました。(2e7ddca) - ↑の
Kernel:load()
メソッドに複数のパスを渡せるようになりました。
Assets
- presetコマンドが追加され、フロントエンド環境を指定できるようになりました。(none, bootstrap, vue, react)(https://laravel.com/docs/5.5/frontend#using-react)
Authentication(認証)
- RequestGuardからもUserProviderを取得できるようになりました。そのため、UserProviderを取得する必要がある場合はRequestGuardを生成した際、またはsetProviderメソッドで指定しなければいけなくなりました。
- ResetPasswordsトレイトのresetPasswordメソッドでsetRememberTokenメソッドが利用されるように修正されました。
-
PasswordReset
イベントが追加されました。パスワードがリセット(再設定)された際に発火されます。 -
AutorizesRequests::authorizeResource()
メソッドが複数ワードを含むモデルに対応しました。 -
createUserProvider()
メソッドがuser providerがない場合にもサポートするようになりました。
Authorization(認可)
-
Gate::has()
メソッドが配列に対応 - ポリシーがあまりにも貪欲にならないようにしました。(#19120) ??(いまいち分かっていません)
- GateContractにabilitiesメソッドが追加されました。
-
Gate::check()
メソッドが複数の値に対応 -
Gate::any()
メソッドが追加されました。これはcheckメソッドが複数の値に対応したため、anyメソッドは複数の値のどれかに対応していれば認可するというメソッドです。
Blade Templates
-
Blade::if()
メソッドが追加されました。 -
@switch
,@case
,@break
,@default
ディレクティブが追加されました。 -
@php
ブロックのパースの処理が修正されました。
Broadcasting
- HttpException(403)をAccessDeniedHttpExceptionに変更しました。
- Pusherがv3系にアップデートされました。
Cache
- PSR-16に準拠(#20194)
- DatabaseDriverは暗号化しないようになりました。
- Cache lock機能のサポート
- CacheRepositoryがDatetimeInterfaceとDateIntervalに対応しました
- RepositoryContractがgetStore()メソッドを必要とするようになりました。
- RateLimiterの判定の修正がされました。(59秒にアクセスがあった場合にアクセスが一時的にできなくなる可能性があるため)
Collections
-
Collection::has()
メソッドが複数の値に対応 -
Collection::mapInto()
メソッドが追加されました。クラスの完全修飾名を投げたらコレクションのvalue,keyを引数としてnewして配列で返します。 -
Collection::dd()
メソッドが追加されました。 -
Collection::dump()
メソッドが追加されました。 -
wrap()
とunwrap()
メソッドが追加されました。名前の通り、Collectionでラップするのとアンラップするメソッドです。 -
partition()
,eachSpread()
,mapSpread()
メソッドのコールバックの引数にkeyが追加されました。
Configuration
-
Config::getMany()
メソッドが追加されました。複数の値を取ってきたい際に利用します。(個人的にonlyメソッドという名前に変わりそうな気がしました)
Controllers
-
ControllerDispatcher
インターフェースが追加になり、カスタムDispatcherが作れるようになりました。 -
ControllerDispatcher
クラスのgetMiddleware
メソッドが静的メソッドから動的メソッドに変更されました。 -
Controller::missingMethod()
メソッドが削除されました。
Database
-
dropAllTables
メソッドがSchema Buliderに追加されました。 -
dateTime
及びtimestamp
カラムのパラメータにprecision
が追加されました。(#18847, f85f6db, #18962, #20464) -
chunk()
のcallbackのパラメータにページ番号が追加されました。(#19316) -
chunk()
とchunkById()
のメモリ使用量が改善されました。 - PostgreSQLを利用時に複数のスキーマを利用した際の
compileColumnListing()
の動作が修正されました。 - Seederが複数のコマンドを一度に実行可能になりました。(#19912)
- pgpoolのメッセージを
DetectsLostConnections
トレイトに追加しました。 - レプリケーションされたDBの競合状態を防止する仕組み(stickyオプション)が追加されました。(#20445, 0ec1522, 3824a36, #20746), (データベース:利用開始 - Readouble)
Eloquent ORM
- APIリソースが追加されました。(#20710)(Eloquent:APIリソース - Readouble)
- ソフトデリートした際でもModelに情報が保持されるようになりました。(#17613)
-
HasRelationships::belongsToMany()
及びBelongsToMany
クラスに$localKey
パラメータが追加されました。(#17903, 7c7c3bc) -
belongsToMany()
,BelongsToMany
クラス、MorphToMany
クラスに$parentKey
パラメータが追加されました。(#17915, #18380) -
Pivot
クラスの$parent
プロパティは$pivotParent
へリネームされました。 -
withCount()
で指定するカラムにエイリアスをつけた場合に_count
接尾辞がつかなくなりました。(#17871) -
モデルイベントクラスの
$events
プロパティは競合するので$dispachesEvents
プロパティへリネームされました。(#17961, b6472bf, 3dbe12f) -
callScope()
がnullの場合にのみクエリビルダを返すようになりました。(#18845) - factoryの属性をfactoryインスタンスに設定可能になりました。(#18879)
- Model::is()メソッドにnullが渡されても問題なく動作するようになりました。
-
getDirty()
メソッドが日付及びキャストされたかのチェックに対応しました。(#18400, e180e20) * -
getDirty()
メソッドが利用するnull許可なDateTimeの取得に関する不具合を修正しました。(#19672)getRelationshipFromMethod()
のLogicException例外にクラス名とメソッド名をメッセージに出すようになりました。(#18749) - リレーションインスタンスでも
firstOrCreate()
及びfirstOrNew()
での追加値のサポートがされました。(#18878) -
HasManyThrough
に$secondLocalKey
パラメータが追加されました。 - カスタムピボットモデルのcastプロパティが尊重されるようになりました。(#19335)
- リレーション経由の
create()
メソッドでattributesを指定しなくても動作するようになりました。(#19506, 973bff4) -
Model::only()
メソッドが追加されました。(#19459) - デフォルト以外のコネクションでモデルのシリアライズをサポートしました。(#19521, dd45f70)
- 一部のpivotモデルのインスタンス化ができない問題が修正されました。(#20179)
-
BelongsToMany::allRelatedIds()
メソッドがシンプルになりました。 - リレーションクラスに
get()
メソッドが追加されました。(#20052) - Modelに
hasChanges()
,wasChanged()
,getChanges()
,syncChanges()
メソッドが追加されました。 - モデル上に存在しないメソッドを呼び出したときの例外メッセージを改善しました。(#20196, 91c1f03)
- ModelFactoryが異なるコネクションでも作成出来るようになりました。(#20191)
-
Pivot
リレーションクラスが実際の主キーを確認して動作するようになりました。(8d82618) - カスタムPivotアクセサー機能が追加されました。これでpivotにアクセスしようとするときに別名でアクセスすることができます。(#20411) (ドキュメントには多分載ってない機能)
-
Model::save()
後にsetConnectionメソッドが実行されるようになりました。(#20466) - touchを利用してタイムスタンプを更新する時、モデルが変更されていれば親のtimestampを更新するようになりました。(#20489)
-
Model::loadMissing()
メソッドが追加されました。これは遅延ロード時にまだリレーションがロードされていない場合にロードするメソッドです。(Eloquent: リレーション - Readouble) -
Model::whereKeyNot()
メソッドが追加されました。これはwhereKeyメソッドのNot版です。
Encryption
-
Encrypter
がopenssl_sipher_iv_length()
メソッドを使うようになりました。(#18684) -
Encrypter::generateKey()
メソッドが追加されました。(6623996) -
Encrypter
がjson_last_error()
メソッドを使うようになりました。(#20099)
Errors & Logging
- 404,419,500エラーページが追加されました。503エラーページは変更されました。
- デバッグモードでない場合は、常に全ての例外に対してカスタム500エラーページを表示するようにしました。(#18481)
-
TokenMismatchException
だった場合は419エラーページを表示するようになりました。 - Exceptionが
render()
メソッドを所持していた場合にHandlerがそれをサポートするようになりました。(ed51160,c8a9413) - Exceptionが
report()
メソッドを所持していた場合にHandlerがそれをサポートするようになりました。(e77f6f7) - デバッグモード時のExceptionでJSONを返す時にデバッグ用のパラメータが付与されるようになりました。
-
$dontReport
に追加する内部例外をメンバ変数$internalDontReport
へ移動しました。(841b36c) -
Hander::context()
メソッドが追加されました。ログの際に必要になる情報を追加してログに埋め込みます。(23b7d6b) -
ErrorLogHandler
にformatterがセットされなくなりました。(a044f17) -
filp/whoops
パッケージを再度使うようになりました。 - 例外のログの書き込み情報が変更になりました。(#19698)
- PostTooLargeExceptionが発生した場合、HttpExceptionの413エラーが返るようになりました。
- logger(monolog)のチャンネル名が変更可能になりました。
- 例外のJSONレスポンスのフォーマットを統一するようにバリデーションが追加されました。(#20173,#20067,#20167等)
-
Handler::unauthenticated()
メソッドがコア側に処理が移動しました。認証されてないときのデフォルトのスタブです。(11b0de0)
Events
-
CallQueuedHandler
が削除されたのでDispatcher::callQueueMethodOnHandler()
メソッドも削除されました。 - 特定のイベントのみの偽装が可能になりました。詳しい内容→モック 5.5 Laravel - readouble(#19429)
- リスナー側でイベントを動的に判定して処理を行うダイナミックリスナーが追加されましたがrevertされました。ただしダイナミックリスナー用の生成コマンドのみ残りました。
- キューに入れられたHandlerをキューにプッシュする必要があるかどうかを判断する機能が追加されました。shouldQueueメソッドがある場合は再度キューへプッシュされます。(#19957,efe616c)
FileSystem
-
Storage::files()
の引数と動作が同じような動作をするStorage::allFiles()
とほぼ同じ処理になりました。(#18874) -
FilesystemAdapter
のputメソッドに問題があったため、このクラスとFileSystem
インターフェースのputメソッドの引数が変更されました。(#19389)
Helpers
-
report()
が追加されました。早速mix()
ヘルパー内でreport()
が使われるようになりました。 -
throw_if
,throw_unless()
が追加されました。 -
dispatch_now()
が追加されました。 -
str_slug()
に$languageパラメータが追加されました。 -
str_before()
が追加されました。 -
now()
,today()
が追加されました。 -
blank()
,filled()
,optional()
,transform()
が追加されました。 -
Str::snake()
が予想に近い動作をするように修正されました。(#18764) -
with()
ヘルパーがPHP7から不要になるため、コアのクラスで使われている箇所が削除されました。なお、ヘルパーは次のバージョンで削除される模様。(#17888) -
Str::is()
メソッドが複数のパターンをサポートするようになりました。 - ドット(.)が存在しない時の
Arr::get()
の速度を改善しました。
Localization
-
Translation/LoaderInterface.php
がContracts/Translation/Loader.php
に移動されました。 - JSONの翻訳ファイルを読み込む場合に複数のパスからJSONを読み込めるようになりました。(#20599)
- Strクラスの言語固有の文字の変換が修正されました。(#18974)
- メールを直接ビューに表示できるようになりました。(d9a6dfa)
- Markdownでテーマ別の設定が出来るようになりました。(b2c35ca)
-
Mailer
とMailQueue
から$data
と$callback
パラメータが削除されました。 -
MailChannel
はmarkdownResolverを必ず使うのでコンストラクタのパラメータにMarkdownが追加されました。(#19349) - SwiftMailerを5.4から6.0にアップグレードしました。
-
Mailer
Contractにto()
とbcc()
メソッドが追加されました。
Notifications
- Slackでの通知に
thumb_url
とunfurl_*
オプションが追加されました。 -
AnonymousNotifiable
経由の通知(オンデマンド通知)の送信をサポートしました。(#19998,ba82579) -
SlackAttachment::timestamp()
メソッドが受け取れる情報が緩くなりました。
Queues
- Jobのチェーンが可能になりました。これで複数のJobを発火したい時に順番に発火可能になりました。(81bcb03)
-
Queue::createPayload()
の$queue
パラメータは冗長なので削除されました。(#17948) -
getQueue()
メソッドがドライバーによってアクセス修飾子が異なったためpublicに統一されました。(#18501) -
Looping
イベントクラスに接続名とキュー名を渡すようになりました。(#19081) - Job固有のプロパティを__clone()メソッドでクローンするようになりました。(#19123)
- Job抽象クラスにgetRawBodyメソッドが必要なことを宣言するようにしました。(#19677)
- unserialize中にModelが見つからない時にジョブが失敗(またはオプションでサイレント削除)になるようにしました。(44b1f85, bceded6)
-
CallQueuedListener::__clone()
メソッドが追加されました。$dataをクローンします。 - キューで
DatetimeInterface
とDateInterval
を許可するようになりました。(#20102, 92e2aff) -
fire()
の代わりにdispatch()
メソッドが使われるようになりました。(#20446) - jobs tableのスタブから
reserved_at
インデックスが削除されました。 - Jobの有効期限またはタイムアウト時間を設定出来るようになりました。(#20776,1592b9b)
Redis
-
PhpRedisConnection
に幾つかの改良が加えられました。(#20269, #20316) -
PhpRedisConnection::proxyToEval()
メソッドが削除されました。(#17360) - Redis Limiterが追加されました。これはRedis固有の機能となるので他のキャッシュドライバー等ではサポートされません。(#20597, ceb260e, #20761, aba76bf, 3684f0c, #20772) (リリースノート - Readouble のキュージョブのレート制限など)
Requests
カオスです。
-
Request::has()
はRequest::filled()
へリネームされました。(#18715) -
Request::exists()
がRequest::has()
へリネームされました。 -
Request::exists()
はRequest::has()
のエイリアスとして追加され直されました。 -
Request::only()
の動作がCollection::only()
のように動作するようになりました。 -
Request::all()
は以前のRequest::only()
のように動作するようになりました。 -
Request::intersect()
が削除されました。 - validateの戻り値としてRequestのデータを返すようになりました。
-
Request
ファサードにvalidate()
マクロが追加されました。(#19063) -
FormRequest
にvalidation済みのデータを返すvalidated()
が追加されました。 -
request()
ヘルパーとRequest::__get()
に一貫性を持たせました。(a6ff272) -
Request::routeIs()
がRequest::fullUrlIs()
のように動作するようになりました。(元のメソッドが追加されたのは5.4.24あたり) -
Request::hasAny()
が追加されました。(#19367) -
ValidateRequests
トレイトがValidationExceptionを返す際にフォーマットせずにそのままExceptionを返すようになりました。(もう少し言えばValidateRequestsトレイトのvalidateメソッドが本来のValidationFactoryと異なる動きをするので元を使うようにした感じでした)(#19929,6d33675,ec88362,c264807) -
Request::post()
メソッドが追加されました。これはクエリ文字列とpostパラメータに同じキーが存在したとき等にpostパラメータの方を取得できるメソッドです。(#20238) -
Request::keys()
メソッドが追加されました。
Routing
- FluentResourceオプションをサポートしました。(resourceメソッドの後にチェーン出来るようになった)(#18767,bb02fb2)
-
Router::has()
メソッドが複数の値をサポートするようになりました。 - modelバインディングのルートパラメータのデフォルト値にnullを指定した際の挙動が変更されました。(#17521)
-
Router::currentRouteNamed()
,Router::is()
,Router::named()
メソッドが正規表現パターンに対応しました。 -
Route::domain()
メソッドがセッターとゲッター両方を兼ね備えるようになりました。 -
Route::redirect()
メソッドが追加されました。 -
Route::view()
メソッドが追加されました。 -
ThrottleRequests
ミドルウェアが改良されました。(#19807,#19860) - 適切に304エラーが返されるようになりました。(#19867)
-
Router::apiResource()
がresource
メソッドと同様にFluentに対応しました。(#20029) - ルートモデルバインディングの解決ロジックがModel側に移動しました。(#20521,他)
-
Route::resource()->parameters()
とRoute::resource()->names()
のパラメータが文字列を許可するようになりました。 -
Route::view()
を利用した際、HEADリクエストでも返すようになりました。 -
ThrottleRequestsWithRedis
ミドルウェアが追加されました。Redis Limiterが追加されたからでしょう。
Responses
- 今までArrayable,Jsonable,ArrayObject,JsonSerializable,そして配列が直接返される時、Responseオブジェクトが返ってましたが、JsonResponseが返るようになりました。(#17875)
- jsonを返す必要があり、もしレスポンスが配列の場合はJSONに変換されるようになりました。(#17868)
-
CookieJar
がSameSite
Cookieをサポートしました。(#18040,#18059,e69d722) -
ResponseTrait::withHeaders()
がHeaderBag
を許可するようになりました。 -
Response::setConent
時にContent-TypeをリセットするようなPRが投げられましたが、問題があったためこれは戻されました。(#18314,#20313) -
getOriginalContent
メソッドは実際のオリジナルConentを返すようになりました。(#20002)
Service Container
-
Container
クラスがリファクタリングされました。(#19201) - PSR-11に対応したコンテナになりました。(#19822,a6068b0,66325c2)
-
Container::instance()
がバインドしたインスタンスを返すようになりました。 - 遅延サービスプロバイダは元々登録してあった同じ名前のインスタンスに上書きされないようになりました。(#20714)
Session
-
Store::flash()
の$valueパラメータのデフォルト値がtrueになりました。 - ログイン時にそのユーザーのパスワードHashが保存されるようになりました。(#19843)
-
basic認証に失敗した際に
UnauthorizedHttpException
をスローするようになりました。(#20673)
Support
Task Scheduling
- クロージャーベースのスケジュールイベントがBeforeCallbackを呼び出していなかったので追加されました。(#18861)
- コールバックイベントが失敗してもafterCallbacksを実行するようになりました。(#19573)
-
quarterly()
メソッドのバグを修正しました。(#19600) -
when()
とskip()
メソッドがbooleanを受け付けるようになりました。(1d1a96e)