Laravel/framework 5.5.0のリリースノートの翻訳まとめ(途中まで)

https://github.com/laravel/framework/releases/tag/v5.5.0
こちらを見てある程度丁寧に翻訳しています。途中で諦めたらすみません。

:warning:が付いているものは以前のバージョンとの互換性が保証されていないものとか危険そうなものにもついています。
:star:が付いている物は結構重要そうなものです。

言い回しの修正とか、追加の翻訳歓迎してます。

全般

  • :warning::star: PHP7以上必須
  • :warning: ServiceProvider::compile()メソッドが削除
  • :warning: 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が追加されました。
  • :warning: make:modelのショートカットオプションである-f--forceから--factoryに変更されました。--forceオプションは直接入力が必要になります
  • make:ruleコマンドが追加されました。
  • make:migrationコマンドでcreate_xxxx_tableと指定した場合にxxxxの部分が--createオプションとして推測されるようになりました
  • make:policyコマンドでファイルを作った際の名前空間がconfig('auth.providers.users.model')の名前空間に設定されるようになりました。
  • make:listenerコマンドでイベントの絶対パスを渡しても動作するようになりました。
  • :warning: ApplicationContractがrunningInConsole()メソッドの実装を強制するようになりました。
  • :warning: RetryCommand::getJobIds()が必ず配列を返すようになりました。
  • :warning::star: fireメソッドが利用されなくなり、handleメソッドへ統一されました。この影響で全てのCommandクラスのfireメソッドはhandleメソッドへRenameしなくてはいけません。(#19827, #20024)
  • :warning: Command::table()メソッドの第1引数のheadersのarrayタイプヒントが削除され、緩くなりました。
  • CommandStartingCommandFinishedイベントが追加されました。これはrunメソッドの前後に配置されています。
  • Kernel:load()メソッドが追加され、指定したディレクトリパスにあるコマンドファイルを一括で登録出来るようになりました。(2e7ddca)
  • ↑のKernel:load()メソッドに複数のパスを渡せるようになりました。

Assets

Authentication(認証)

  • :warning: RequestGuardからもUserProviderを取得できるようになりました。そのため、UserProviderを取得する必要がある場合はRequestGuardを生成した際、またはsetProviderメソッドで指定しなければいけなくなりました。
  • ResetPasswordsトレイトのresetPasswordメソッドでsetRememberTokenメソッドが利用されるように修正されました。
  • PasswordResetイベントが追加されました。パスワードがリセット(再設定)された際に発火されます。
  • AutorizesRequests::authorizeResource()メソッドが複数ワードを含むモデルに対応しました。
  • createUserProvider()メソッドがuser providerがない場合にもサポートするようになりました。

Authorization(認可)

  • Gate::has()メソッドが配列に対応
  • :warning: ポリシーがあまりにも貪欲にならないようにしました。(#19120) ??(いまいち分かっていません)
  • :warning: GateContractにabilitiesメソッドが追加されました。
  • :warning: Gate::check()メソッドが複数の値に対応
  • Gate::any()メソッドが追加されました。これはcheckメソッドが複数の値に対応したため、anyメソッドは複数の値のどれかに対応していれば認可するというメソッドです。

Blade Templates

  • Blade::if()メソッドが追加されました。
  • @switch,@case,@break,@defaultディレクティブが追加されました。
  • :warning: @phpブロックのパースの処理が修正されました。

Broadcasting

  • :warning: HttpException(403)をAccessDeniedHttpExceptionに変更しました。
  • :warning: Pusherがv3系にアップデートされました。

Cache

  • :warning::star: PSR-16に準拠(#20194)
  • DatabaseDriverは暗号化しないようになりました。
  • Cache lock機能のサポート
  • CacheRepositoryがDatetimeInterfaceとDateIntervalに対応しました
  • :warning: RepositoryContractがgetStore()メソッドを必要とするようになりました。
  • :warning: 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が作れるようになりました。
  • :warning: ControllerDispatcherクラスのgetMiddlewareメソッドが静的メソッドから動的メソッドに変更されました。
  • Controller::missingMethod()メソッドが削除されました。

Database

  • :warning: dropAllTablesメソッドがSchema Buliderに追加されました。
  • dateTime及びtimestampカラムのパラメータにprecisionが追加されました。(#18847, f85f6db, #18962, #20464)
  • chunk()のcallbackのパラメータにページ番号が追加されました。(#19316)
  • chunk()chunkById()のメモリ使用量が改善されました。
  • PostgreSQLを利用時に複数のスキーマを利用した際のcompileColumnListing()の動作が修正されました。
  • Seederが複数のコマンドを一度に実行可能になりました。(#19912)
  • pgpoolのメッセージをDetectsLostConnectionsトレイトに追加しました。
  • :warning: レプリケーションされたDBの競合状態を防止する仕組み(stickyオプション)が追加されました。(#20445, 0ec1522, 3824a36, #20746), (データベース:利用開始 - Readouble)

Eloquent ORM

  • :star: APIリソースが追加されました。(#20710)(Eloquent:APIリソース - Readouble)
  • :warning: ソフトデリートした際でもModelに情報が保持されるようになりました。(#17613)
  • :warning: HasRelationships::belongsToMany()及びBelongsToManyクラスに$localKeyパラメータが追加されました。(#17903, 7c7c3bc)
  • :warning: belongsToMany(),BelongsToManyクラス、MorphToManyクラスに$parentKeyパラメータが追加されました。(#17915, #18380)
  • :warning: Pivotクラスの$parentプロパティは$pivotParentへリネームされました。
  • :warning: withCount()で指定するカラムにエイリアスをつけた場合に_count接尾辞がつかなくなりました。(#17871)
  • :warning: モデルイベントクラスの$eventsプロパティは競合するので$dispachesEventsプロパティへリネームされました。(#17961, b6472bf, 3dbe12f)
  • :warning: callScope()がnullの場合にのみクエリビルダを返すようになりました。(#18845)
  • factoryの属性をfactoryインスタンスに設定可能になりました。(#18879)
  • Model::is()メソッドにnullが渡されても問題なく動作するようになりました。
  • getDirty()メソッドが日付及びキャストされたかのチェックに対応しました。(#18400, e180e20) *
  • :warning: getDirty()メソッドが利用するnull許可なDateTimeの取得に関する不具合を修正しました。(#19672) getRelationshipFromMethod()のLogicException例外にクラス名とメソッド名をメッセージに出すようになりました。(#18749)
  • リレーションインスタンスでもfirstOrCreate()及びfirstOrNew()での追加値のサポートがされました。(#18878)
  • HasManyThrough$secondLocalKeyパラメータが追加されました。
  • カスタムピボットモデルのcastプロパティが尊重されるようになりました。(#19335)
  • リレーション経由のcreate()メソッドでattributesを指定しなくても動作するようになりました。(#19506, 973bff4)
  • Model::only()メソッドが追加されました。(#19459)
  • :warning: デフォルト以外のコネクションでモデルのシリアライズをサポートしました。(#19521, dd45f70)
  • :warning: 一部のpivotモデルのインスタンス化ができない問題が修正されました。(#20179)
  • BelongsToMany::allRelatedIds()メソッドがシンプルになりました。
  • リレーションクラスにget()メソッドが追加されました。(#20052)
  • ModelにhasChanges(),wasChanged(),getChanges(),syncChanges()メソッドが追加されました。
  • モデル上に存在しないメソッドを呼び出したときの例外メッセージを改善しました。(#20196, 91c1f03)
  • ModelFactoryが異なるコネクションでも作成出来るようになりました。(#20191)
  • Pivotリレーションクラスが実際の主キーを確認して動作するようになりました。(8d82618)
  • :star: カスタムPivotアクセサー機能が追加されました。これでpivotにアクセスしようとするときに別名でアクセスすることができます。(#20411) (ドキュメントには多分載ってない機能)
  • :warning: Model::save()後にsetConnectionメソッドが実行されるようになりました。(#20466)
  • :warning: touchを利用してタイムスタンプを更新する時、モデルが変更されていれば親のtimestampを更新するようになりました。(#20489)
  • Model::loadMissing()メソッドが追加されました。これは遅延ロード時にまだリレーションがロードされていない場合にロードするメソッドです。(Eloquent: リレーション - Readouble)
  • Model::whereKeyNot()メソッドが追加されました。これはwhereKeyメソッドのNot版です。

Encryption

  • Encrypteropenssl_sipher_iv_length()メソッドを使うようになりました。(#18684)
  • Encrypter::generateKey()メソッドが追加されました。(6623996)
  • Encrypterjson_last_error()メソッドを使うようになりました。(#20099)

Errors & Logging

  • 404,419,500エラーページが追加されました。503エラーページは変更されました。
  • :warning: デバッグモードでない場合は、常に全ての例外に対してカスタム500エラーページを表示するようにしました。(#18481)
  • :warning: TokenMismatchExceptionだった場合は419エラーページを表示するようになりました。
  • Exceptionがrender()メソッドを所持していた場合にHandlerがそれをサポートするようになりました。(ed51160,c8a9413)
  • Exceptionがreport()メソッドを所持していた場合にHandlerがそれをサポートするようになりました。(e77f6f7)
  • :warning: デバッグモード時のExceptionでJSONを返す時にデバッグ用のパラメータが付与されるようになりました。
  • :warning: $dontReportに追加する内部例外をメンバ変数$internalDontReportへ移動しました。(841b36c)
  • Hander::context()メソッドが追加されました。ログの際に必要になる情報を追加してログに埋め込みます。(23b7d6b)
  • :warning: ErrorLogHandlerにformatterがセットされなくなりました。(a044f17)
  • filp/whoopsパッケージを再度使うようになりました。
  • 例外のログの書き込み情報が変更になりました。(#19698)
  • :warning: PostTooLargeExceptionが発生した場合、HttpExceptionの413エラーが返るようになりました。
  • logger(monolog)のチャンネル名が変更可能になりました。
  • :warning::star: 例外のJSONレスポンスのフォーマットを統一するようにバリデーションが追加されました。(#20173,#20067,#20167等)
  • Handler::unauthenticated()メソッドがコア側に処理が移動しました。認証されてないときのデフォルトのスタブです。(11b0de0)

Events

  • :warning: CallQueuedHandlerが削除されたのでDispatcher::callQueueMethodOnHandler()メソッドも削除されました。
  • :star: 特定のイベントのみの偽装が可能になりました。詳しい内容→モック 5.5 Laravel - readouble(#19429)
  • リスナー側でイベントを動的に判定して処理を行うダイナミックリスナーが追加されましたがrevertされました。ただしダイナミックリスナー用の生成コマンドのみ残りました。
  • キューに入れられたHandlerをキューにプッシュする必要があるかどうかを判断する機能が追加されました。shouldQueueメソッドがある場合は再度キューへプッシュされます。(#19957,efe616c)

FileSystem

  • :warning: Storage::files()の引数と動作が同じような動作をするStorage::allFiles()とほぼ同じ処理になりました。(#18874)
  • :warning: 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()が追加されました。
  • :warning: Str::snake()が予想に近い動作をするように修正されました。(#18764)
  • :warning: with()ヘルパーがPHP7から不要になるため、コアのクラスで使われている箇所が削除されました。なお、ヘルパーは次のバージョンで削除される模様。(#17888)
  • Str::is()メソッドが複数のパターンをサポートするようになりました。
  • ドット(.)が存在しない時のArr::get()の速度を改善しました。

Localization

  • :warning: Translation/LoaderInterface.phpContracts/Translation/Loader.phpに移動されました。
  • :warning: JSONの翻訳ファイルを読み込む場合に複数のパスからJSONを読み込めるようになりました。(#20599)
  • Strクラスの言語固有の文字の変換が修正されました。(#18974)

Mail

  • メールを直接ビューに表示できるようになりました。(d9a6dfa)
  • Markdownでテーマ別の設定が出来るようになりました。(b2c35ca)
  • :warning: MailerMailQueueから$data$callbackパラメータが削除されました。
  • :warning: MailChannelはmarkdownResolverを必ず使うのでコンストラクタのパラメータにMarkdownが追加されました。(#19349)
  • :warning: SwiftMailerを5.4から6.0にアップグレードしました。
  • :warning: MailerContractにto()bcc()メソッドが追加されました。

Notifications

  • Slackでの通知にthumb_urlunfurl_*オプションが追加されました。
  • AnonymousNotifiable経由の通知(オンデマンド通知)の送信をサポートしました。(#19998,ba82579)
  • SlackAttachment::timestamp()メソッドが受け取れる情報が緩くなりました。

Queues

  • Jobのチェーンが可能になりました。これで複数のJobを発火したい時に順番に発火可能になりました。(81bcb03)
  • :warning: Queue::createPayload()$queueパラメータは冗長なので削除されました。(#17948)
  • getQueue()メソッドがドライバーによってアクセス修飾子が異なったためpublicに統一されました。(#18501)
  • Loopingイベントクラスに接続名とキュー名を渡すようになりました。(#19081)
  • :warning: Job固有のプロパティを__clone()メソッドでクローンするようになりました。(#19123)
  • :warning: Job抽象クラスにgetRawBodyメソッドが必要なことを宣言するようにしました。(#19677)
  • :warning: unserialize中にModelが見つからない時にジョブが失敗(またはオプションでサイレント削除)になるようにしました。(44b1f85, bceded6)
  • CallQueuedListener::__clone()メソッドが追加されました。$dataをクローンします。
  • キューでDatetimeInterfaceDateIntervalを許可するようになりました。(#20102, 92e2aff)
  • :warning: fire()の代わりにdispatch()メソッドが使われるようになりました。(#20446)
  • jobs tableのスタブからreserved_atインデックスが削除されました。
  • :star: Jobの有効期限またはタイムアウト時間を設定出来るようになりました。(#20776,1592b9b)

Redis

  • :warning: PhpRedisConnectionに幾つかの改良が加えられました。(#20269, #20316)
  • :warning: PhpRedisConnection::proxyToEval()メソッドが削除されました。(#17360)
  • Redis Limiterが追加されました。これはRedis固有の機能となるので他のキャッシュドライバー等ではサポートされません。(#20597, ceb260e, #20761, aba76bf, 3684f0c, #20772) (リリースノート - Readouble のキュージョブのレート制限など)

Requests

カオスです。

  • :warning: Request::has()Request::filled()へリネームされました。(#18715)
  • Request::exists()Request::has()へリネームされました。
  • Request::exists()Request::has()のエイリアスとして追加され直されました。
  • :warning: Request::only()の動作がCollection::only()のように動作するようになりました。
  • Request::all()は以前のRequest::only()のように動作するようになりました。
  • :warning: Request::intersect()が削除されました。
  • validateの戻り値としてRequestのデータを返すようになりました。
  • Requestファサードにvalidate()マクロが追加されました。(#19063)
  • FormRequestにvalidation済みのデータを返すvalidated()が追加されました。
  • :warning: request()ヘルパーとRequest::__get()に一貫性を持たせました。(a6ff272)
  • Request::routeIs()Request::fullUrlIs()のように動作するようになりました。(元のメソッドが追加されたのは5.4.24あたり)
  • Request::hasAny()が追加されました。(#19367)
  • :warning: ValidateRequestsトレイトがValidationExceptionを返す際にフォーマットせずにそのままExceptionを返すようになりました。(もう少し言えばValidateRequestsトレイトのvalidateメソッドが本来のValidationFactoryと異なる動きをするので元を使うようにした感じでした)(#19929,6d33675,ec88362,c264807)
  • Request::post()メソッドが追加されました。これはクエリ文字列とpostパラメータに同じキーが存在したとき等にpostパラメータの方を取得できるメソッドです。(#20238)
  • Request::keys()メソッドが追加されました。

Routing

  • FluentResourceオプションをサポートしました。(resourceメソッドの後にチェーン出来るようになった)(#18767,bb02fb2)
  • Router::has()メソッドが複数の値をサポートするようになりました。
  • :warning: modelバインディングのルートパラメータのデフォルト値にnullを指定した際の挙動が変更されました。(#17521)
  • Router::currentRouteNamed(),Router::is(),Router::named()メソッドが正規表現パターンに対応しました。
  • Route::domain()メソッドがセッターとゲッター両方を兼ね備えるようになりました。
  • Route::redirect()メソッドが追加されました。
  • Route::view()メソッドが追加されました。
  • :warning: ThrottleRequestsミドルウェアが改良されました。(#19807,#19860)
  • :warning: 適切に304エラーが返されるようになりました。(#19867)
  • Router::apiResource()resourceメソッドと同様にFluentに対応しました。(#20029)
  • :warning: ルートモデルバインディングの解決ロジックがModel側に移動しました。(#20521,他)
  • Route::resource()->parameters()Route::resource()->names()のパラメータが文字列を許可するようになりました。
  • Route::view()を利用した際、HEADリクエストでも返すようになりました。
  • ThrottleRequestsWithRedisミドルウェアが追加されました。Redis Limiterが追加されたからでしょう。

Responses

  • :warning: 今までArrayable,Jsonable,ArrayObject,JsonSerializable,そして配列が直接返される時、Responseオブジェクトが返ってましたが、JsonResponseが返るようになりました。(#17875)
  • :warning: jsonを返す必要があり、もしレスポンスが配列の場合はJSONに変換されるようになりました。(#17868)
  • CookieJarSameSiteCookieをサポートしました。(#18040,#18059,e69d722)
  • ResponseTrait::withHeaders()HeaderBagを許可するようになりました。
  • Response::setConent時にContent-TypeをリセットするようなPRが投げられましたが、問題があったためこれは戻されました。(#18314,#20313)
  • :warning: getOriginalContentメソッドは実際のオリジナルConentを返すようになりました。(#20002)

Service Container

  • :warning: Containerクラスがリファクタリングされました。(#19201)
  • :warning: PSR-11に対応したコンテナになりました。(#19822,a6068b0,66325c2)
  • Container::instance()がバインドしたインスタンスを返すようになりました。
  • :warning: 遅延サービスプロバイダは元々登録してあった同じ名前のインスタンスに上書きされないようになりました。(#20714)

Session

  • :warning: Store::flash()の$valueパラメータのデフォルト値がtrueになりました。
  • :warning: ログイン時にそのユーザーのパスワードHashが保存されるようになりました。(#19843)
  • :warning: basic認証に失敗した際にUnauthorizedHttpExceptionをスローするようになりました。(#20673)

Support

Task Scheduling

  • クロージャーベースのスケジュールイベントがBeforeCallbackを呼び出していなかったので追加されました。(#18861)
  • コールバックイベントが失敗してもafterCallbacksを実行するようになりました。(#19573)
  • :warning: quarterly()メソッドのバグを修正しました。(#19600)
  • :warning: when()skip()メソッドがbooleanを受け付けるようになりました。(1d1a96e)

Testing

Validation

Views

Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account log in.