diff --git a/kr/pint.md b/kr/pint.md
index 0c59e37cd..1b250de0a 100644
--- a/kr/pint.md
+++ b/kr/pint.md
@@ -1,60 +1,42 @@
# Laravel Pint
-# 라라벨 Pint
-- [Introduction](#introduction)
-- [시작하기](#introduction)
-- [Installation](#installation)
+- [소개](#introduction)
- [설치](#installation)
-- [Running Pint](#running-pint)
-- [Pint 실행하기](#running-pint)
-- [Configuring Pint](#configuring-pint)
-- [Pint 설정하기](#configuring-pint)
- - [Presets](#presets)
- - [프리셋](#presets)
- - [Rules](#rules)
- - [규칙](#rules)
- - [Excluding Files / Folders](#excluding-files-or-folders)
- - [파일 / 폴더 제외하기](#excluding-files-or-folders)
+- [실행](#running-pint)
+- [설정](#configuring-pint)
+ - [프리셋](#presets)
+ - [규칙](#rules)
+ - [파일/폴더 제외](#excluding-files-or-folders)
-## Introduction
-## 시작하기
-[Laravel Pint](https://github.com/laravel/pint) is an opinionated PHP code style fixer for minimalists. Pint is built on top of PHP-CS-Fixer and makes it simple to ensure that your code style stays clean and consistent.
+## 소개
-[라라벨 Pint](https://github.com/laravel/pint)는 미니멀리스트를 위한 독창적인 PHP 코드 스타일 해결사입니다. Pint는 PHP-CS-Fixer를 기반으로 구축되었으며 코드 스타일이 깨끗하고 일관성을 유지하도록 간단하게 해줍니다.
+[라라벨 파인트](https://github.com/laravel/pint) 는 미니멀리스트를 위한 PHP만의 고유한 코드 수정 도구입니다. 파인트는 PHP-CS-FIXER 기반으로 구축되었으며 코드 스타일을 간결하고 일관되게 유지하는 것을 더욱 간편하게 해줍니다.
-Pint is automatically installed with all new Laravel applications so you may start using it immediately. By default, Pint does not require any configuration and will fix code style issues in your code by following the opinionated coding style of Laravel.
-
-Pint는 모든 새로운 라라벨 애플리케이션과 함께 자동으로 설치되므로 즉시 사용할 수 있습니다. 기본적으로 Pint는 구성이 필요하지 않으며 라라벨의 독창적인 코딩 스타일을 따라 코드의 코드 스타일 문제를 수정합니다.
+파인트는 새로운 라라벨 애플리케이션을 설치하면 자동으로 설치되며, 곧바로 사용할 수 있습니다. 기본적으로 파인트는 어떤 설정도 요구하지 않으며, 라라벨의 고유한 코드 스타일을 따라 당신의 코드를 수정해줄 것입니다.
-## Installation
-## 설치
-Pint is included in recent releases of the Laravel framework, so installation is typically unnecessary. However, for older applications, you may install Laravel Pint via Composer:
+## 설치
-Pint는 라라벨 프레임워크의 최신 릴리스에 포함되어 있으므로 일반적으로 설치가 필요하지 않습니다. 그러나 이전 애플리케이션의 경우 컴포저를 통해 라라벨 Pint를 설치할 수 있습니다.
+파인트는 최신 라라벨 프레임워크에 포함되어 있으며, 일반적으로 설치는 불필요합니다. 그러나 이전 버전의 애플리케이션이라면 Composer를 이용하여 설치하여야 합니다.
```shell
composer require laravel/pint --dev
```
-## Running Pint
-## Pint 설치하기
-You can instruct Pint to fix code style issues by invoking the `pint` binary that is available in your project's `vendor/bin` directory:
+## 실행
-`.vendor/bin` 프로젝트 디렉토리에서 사용할 수 있는 `pint` 바이너리를 호출하여 Pint가 코드 스타일 문제를 수정하도록 지시할 수 있습니다
+당신은 당신의 프로젝트 내 `vendor/bin` 디렉토리에 있는 `pint` 바이너리를 실행하여 파인트로 하여금 코드를 수정할 수 있도록 명령할 수 있습니다.
```shell
./vendor/bin/pint
```
-You may also run Pint on specific files or directories:
-
-특정 파일이나 디렉토리에서도 Pint를 실행할 수 있습니다.
+또한 당신은 특정 파일이나 디렉토리에 파인트를 실행할 수 있습니다.
```shell
./vendor/bin/pint app/Models
@@ -62,144 +44,110 @@ You may also run Pint on specific files or directories:
./vendor/bin/pint app/Models/User.php
```
-Pint will display a thorough list of all of the files that it updates. You can view even more detail about Pint's changes by providing the `-v` option when invoking Pint:
-
-Pint는 업데이트하는 모든 파일의 전체 목록을 표시합니다. Pint를 호출할 때 `-v` 옵션을 제공하여 Pint의 변경 사항에 대한 자세한 내용을 볼 수 있습니다 .
+파인트는 업데이트하고자하는 모든 파일들의 리스트를 보여줄 것입니다. 파인트가 수정하고자 하는 더 자세한 내용을 보고자 한다면 `-v` 옵션을 추가하여 실행해주세요.
```shell
./vendor/bin/pint -v
```
-If you would like Pint to simply inspect your code for style errors without actually changing the files, you may use the `--test` option:
-
-Pint가 실제로 파일을 변경하지 않고 코드에서 스타일 오류를 검사하도록 하려면 `--test` 옵션을 사용하면 됩니다.
+파인트가 파일 수정 없이 간단하게 코드 스타일 오류를 검사하기를 원한다면, `--test` 옵션을 사용할 수 있습니다.
```shell
./vendor/bin/pint --test
```
-If you would like Pint to only modify the files that have uncommitted changes according to Git, you may use the `--dirty` option:
-
-Pint가 Git에 따라 커밋되지 않은 변경 사항이 있는 파일만 수정하도록 하려면 `--dirty` 옵션을 사용하면 됩니다.
+Git 상에서 커밋되지 않은 내용만들 수정하고자 한다면, `--dirty` 옵션을 사용하세요
```shell
./vendor/bin/pint --dirty
```
-## Configuring Pint
-## Pint 설정하기
-As previously mentioned, Pint does not require any configuration. However, if you wish to customize the presets, rules, or inspected folders, you may do so by creating a `pint.json` file in your project's root directory:
+## 설정
-앞서 언급했듯이 Pint는 별다른 설정이 필요하지 않습니다. 하지만 프리셋, 규칙 또는 검사된 폴더를 커스터마이징하려면 프로젝트의 루트 디렉터리에 `pint.json` 파일을 생성해야합니다.
+앞서 이야기한 것처럼 파인트는 어떤 설정도 필요로 하지 않습니다. 그러나 프리셋, 규칙, 검사 폴더 등을 수정하고자 한다면, `pint.json` 파일을 루트 디렉토리에 생성하여야 합니다.
```json
{
- "preset": "laravel"
+ "preset": "laravel"
}
```
-In addition, if you wish to use a `pint.json` from a specific directory, you may provide the `--config` option when invoking Pint:
-
-또한 `pint.json`를 특정 디렉토리에서 사용하려는 경우 Pint를 호출할 때 `--config` 옵션을 제공할 수 있습니다.
+추가로, `pint.json` 파일을 특정 디렉토리에서 이용하고자 한다면, 파인트를 실행할 때 `--config` 옵션을 제공할 수 있습니다.
```shell
pint --config vendor/my-company/coding-style/pint.json
```
-### Presets
-### 프리셋
-Presets defines a set of rules that can be used to fix code style issues in your code. By default, Pint uses the `laravel` preset, which fixes issues by following the opinionated coding style of Laravel. However, you may specify a different preset by providing the `--preset` option to Pint:
+### 프리셋
-사전 설정은 코드 스타일 문제를 수정하는 데 사용할 수 있는 일련의 규칙을 정의합니다. 기본적으로 Pint는 라라벨의 독창적인 코딩 스타일을 따라 문제를 수정하는 `laravel` 사전 설정을 사용합니다. 그러나 Pint에 `--preset` 옵션을 제공하여 다른 사전 설정을 지정할 수 있습니다 .
+프리셋은 당신 코드에 있는 스타일 이슈를 수정하는 몇 가지 규칙을 정의합니다. 기본적으로 파인트는 `laravel` 프리셋을 사용하며, 이는 라라벨 특유의 코드 스타일을 준수합니다. 그러나, 당신이 다른 프리셋을 사용하고자 한다면 파인트 사용 시 `--preset` 옵션을 추가해야 합니다.
```shell
pint --preset psr12
```
-If you wish, you may also set the preset in your project's `pint.json` file:
-
-원하는 경우 프로젝트 `pint.json` 파일에서 사전 설정을 설정할 수도 있습니다.
+원한다면 `pint.json` 파일에 프리셋을 추가할 수도 있습니다.
```json
{
- "preset": "psr12"
+ "preset": "psr12"
}
```
-Pint's currently supported presets are: `laravel`, `psr12`, and `symfony`.
-
-Pint의 현재 지원되는 사전 설정은 `laravel`, `psr12`, `symfony` 입니다.
+파인트는 현재 `laravel`, `psr12`, `symfony` 프리셋을 지원합니다.
-### Rules
-### 규칙
-
-Rules are style guidelines that Pint will use to fix code style issues in your code. As mentioned above, presets are predefined groups of rules that should be perfect for most PHP projects, so you typically will not need to worry about the individual rules they contain.
-규칙은 Pint가 코드 스타일 문제를 수정하는 데 사용할 스타일 지침입니다. 위에서 언급했듯이 사전 설정은 대부분의 PHP 프로젝트에 완벽해야 하는 사전 정의된 규칙 그룹이므로 일반적으로 사전 설정에 포함된 개별 규칙에 대해 걱정할 필요가 없습니다.
+### 규칙
-However, if you wish, you may enable or disable specific rules in your `pint.json` file:
+규칙이란 파인트가 코드를 수정할 때 사용할 스타일 가이드라인입니다. 앞에서 이야기한 것처럼, 프리셋은 많은 PHP 프로젝트에서 사용되기에 최적인 몇 가지 사전 정의된 규칙들이며, 당신은 일반적으로 개별적인 규칙에 대해 걱정할 필요가 없습니다.
-그러나 원하는 경우 `pint.json` 파일에서 특정 규칙을 활성화하거나 비활성화할 수 있습니다.
+그러나 원한다면, `pint.json` 파일내에서 특정한 규칙을 적용하거나 적용하지 않도록 조정할 수 있습니다..
```json
{
- "preset": "laravel",
- "rules": {
- "simplified_null_return": true,
- "braces": false,
- "new_with_braces": {
- "anonymous_class": false,
- "named_class": false
- }
- }
+ "preset": "laravel",
+ "rules": {
+ "simplified_null_return": true,
+ "braces": false,
+ "new_with_braces": {
+ "anonymous_class": false,
+ "named_class": false
+ }
+ }
}
```
-Pint is built on top of [PHP-CS-Fixer](https://github.com/FriendsOfPHP/PHP-CS-Fixer). Therefore, you may use any of its rules to fix code style issues in your project: [PHP-CS-Fixer Configurator](https://mlocati.github.io/php-cs-fixer-configurator).
-
-Pint는 [PHP-CS-Fixer](https://github.com/FriendsOfPHP/PHP-CS-Fixer) 위에 구축되었습니다 . 따라서 모든 PHP-CS-Fixer의 규칙을 사용하여 프로젝트의 코드 스타일 문제를 수정할 수 있습니다. [PHP-CS-Fixer 설정기](https://mlocati.github.io/php-cs-fixer-configurator)를 참고하세요.
+파인트는 [PHP-CS-Fixer](https://github.com/FriendsOfPHP/PHP-CS-Fixer)를 기반으로 합니다. 그러므로 PHP-CS-Fixer의 규칙을 준수해야 합니다[PHP-CS-Fixer Configurator](https://mlocati.github.io/php-cs-fixer-configurator).
-### Excluding Files / Folders
-### 파일 / 폴더 제외
-By default, Pint will inspect all `.php` files in your project except those in the `vendor` directory. If you wish to exclude more folders, you may do so using the `exclude` configuration option:
+### 파일/폴더 제외
-기본적으로 Pint는 `vendor` 디렉토리에 있는 파일을 제외한 프로젝트의 모든 `.php` 파일을 검사합니다. 더 많은 폴더를 제외하려면 `exclude` 구성 옵션을 사용하여 제외할 수 있습니다.
+기본적으로 파인트는 프로젝트 내에 `vendor` 디렉토리를 제외한 모든 `.php` 파일을 검사합니다. 만약 폴더를 제외하고 싶다면, `exclude` 옵션을 이용하세요.
```json
{
- "exclude": [
- "my-specific/folder"
- ]
+ "exclude": ["my-specific/folder"]
}
```
-If you wish to exclude all files that contain a given name pattern, you may do so using the `notName` configuration option:
-
-지정된 이름 패턴을 포함하는 모든 파일을 제외하려면 `notName` 구성 옵션을 사용하여 제외할 수 있습니다.
+특정 네이밍 패턴을 가진 모든 파일을 제외하고자 한다면, `notName` 옵션을 이용하세요.
```json
{
- "notName": [
- "*-my-file.php"
- ]
+ "notName": ["*-my-file.php"]
}
```
-If you would like to exclude a file by providing an exact path to the file, you may do so using the `notPath` configuration option:
-
-파일에 대한 정확한 경로를 제공하여 파일을 제외하려면 `notPath` 구성 옵션을 사용하면 됩니다.
+특정 경로의 파일을 제외하고자 한다면, `notPath` 옵션을 이용하세요
```json
{
- "notPath": [
- "path/to/excluded-file.php"
- ]
+ "notPath": ["path/to/excluded-file.php"]
}
```
diff --git a/kr/upgrade.md b/kr/upgrade.md
index cf2966ec3..831c68c45 100644
--- a/kr/upgrade.md
+++ b/kr/upgrade.md
@@ -1,1024 +1,346 @@
-# Upgrade Guide
# 업그레이드 가이드
-- [Upgrading To 9.0 From 8.x](#upgrade-9.0)
-- [8.x에서 9.0으로 업그레이드](#upgrade-9.0)
+- [9.x 버전에서 10.0으로 업그레이드](#upgrade-10.0)
+
## High Impact Changes
-## 영향도 높은 변경사항들
-- [Updating Dependencies](#updating-dependencies)
- [의존성 업데이트](#updating-dependencies)
-- [Flysystem 3.x](#flysystem-3)
-- [Flysystem 3.x](#flysystem-3)
-- [Symfony Mailer](#symfony-mailer)
-- [Symfony 메일러](#symfony-mailer)
+- [Minimum Stability 업데이트](#updating-minimum-stability)
+
## Medium Impact Changes
-## 영향도 중간의 변경사항들
-- [Belongs To Many `firstOrNew`, `firstOrCreate`, and `updateOrCreate` methods](#belongs-to-many-first-or-new)
-- [Belongs To Many `firstOrNew`, `firstOrCreate`, and `updateOrCreate` methods](#belongs-to-many-first-or-new)
-- [Custom Casts & `null`](#custom-casts-and-null)
-- [Custom Casts & `null`](#custom-casts-and-null)
-- [Default HTTP Client Timeout](#http-client-default-timeout)
-- [Default HTTP Client Timeout](#http-client-default-timeout)
-- [PHP Return Types](#php-return-types)
-- [PHP Return Types](#php-return-types)
-- [Postgres "Schema" Configuration](#postgres-schema-configuration)
-- [Postgres "Schema" Configuration](#postgres-schema-configuration)
-- [The `assertDeleted` Method](#the-assert-deleted-method)
-- [`assertDeleted` 메소드](#the-assert-deleted-method)
-- [The `lang` Directory](#the-lang-directory)
-- [`lang` 디렉토리](#the-lang-directory)
-- [The `password` Rule](#the-password-rule)
-- [`password` 규칙](#the-password-rule)
-- [The `when` / `unless` Methods](#when-and-unless-methods)
-- [`when` / `unless` 메소드](#when-and-unless-methods)
-- [Unvalidated Array Keys](#unvalidated-array-keys)
-- [검증되지 않은 배열 키](#unvalidated-array-keys)
+- [데이터베이스 구문](#database-expressions)
+- ["Dates" 모델 프로퍼티](#model-dates-property)
+- [Monolog 3](#monolog-3)
+- [Redis 캐시 태그](#redis-cache-tags)
+- [서비스 모킹](#service-mocking)
+- [언어](#language-directory)
-
-## Upgrading To 9.0 From 8.x
-## 8.x에서 9.0으로 업그레이드
-
-
-#### Estimated Upgrade Time: 30 Minutes
-#### 예상되는 업그레이드 시간: 30분
-
-> **Note**
-> We attempt to document every possible breaking change. Since some of these breaking changes are in obscure parts of the framework only a portion of these changes may actually affect your application. Want to save time? You can use [Laravel Shift](https://laravelshift.com/) to help automate your application upgrades.
-
-> **Note**
-> 이전 버전과 호환되지 않는 모든 변경사항을 기록했습니다만 변경사항들 중 일부는 프레임워크의 모호한 부분에 있기 때문에 실제로는 여러분의 어플리케이션에 영향을 끼치지 않을 수도 있습니다. 시간을 절약하고 싶다면 [Laravel Shift](https://laravelshift.com/)와 같은 서비스를 사용할수도 있습니다.
-
-
-### Updating Dependencies
-### 의존성 업데이트
-
-**Likelihood Of Impact: High**
-**영향 가능성: 높음**
+
-#### PHP 8.0.2 Required
-#### PHP 8.0.2 필요
-
-라라벨은 이제 PHP 8.0.2 이상을 필요로 합니다.
-
-#### Composer Dependencies
-#### 컴포저 의존성 업데이트
-
-You should update the following dependencies in your application's `composer.json` file:
-
-애플리케이션의 `composer.json` 에서 다음과 같이 의존성을 업데이트 해야합니다.
+## Low Impact Changes
-- `laravel/framework` to `^9.0`
-- `nunomaduro/collision` to `^6.1`
+- [클로저 검증 규칙 메시지](#closure-validation-rule-messages)
+- [Form 요청 `after` 메소드](#form-request-after-method)
+- [Public 경로 바인딩](#public-path-binding)
+- [쿼리 예외 생성자](#query-exception-constructor)
+- [Rate Limiter 반환 값](#rate-limiter-return-values)
+- [Relation `getBaseQuery` 메소드](#relation-getbasequery-method)
+- [`Redirect::home` 메소드](#redirect-home)
+- [`Bus::dispatchNow` 메소드](#dispatch-now)
+- [`registerPolicies` 메소드](#register-policies)
+- [ULID 컬럼](#ulid-columns)
-- `laravel/framework` 을 `^9.0` 으로 지정
-- `nunomaduro/collision` 을 `^6.1` 으로 지정
+
-In addition, please replace `facade/ignition` with `"spatie/laravel-ignition": "^1.0"` and `pusher/pusher-php-server` (if applicable) with `"pusher/pusher-php-server": "^5.0"` in your application's `composer.json` file.
+## Upgrading To 10.0 From 9.x
-추가적으로 `composer.json` 에서 `facade/ignition` 을 `"spatie/laravel-ignition": "^1.0"` 으로, `pusher/pusher-php-server` (가능하다면) `"pusher/pusher-php-server": "^5.0"` 으로 교체하십시오.
+
-Furthermore, the following first-party packages have received new major releases to support Laravel 9.x. If applicable, you should read their individual upgrade guides before upgrading:
+#### 예상 소요 시간 : 10분
-그리고 다음의 패키지를 사용한다면 라라벨 9.x 를 지원하는 새로운 버전으로 받으십시오. 개별 패키지를 업데이트하기 전에 패키지별로 업그레이드 가이드를 확인하십시오.
+> **Note**
+> 모든 주요 변경 사항을 문서화하고자 했습니다. 몇몇 변경 사항은 프레임워크의 모호한 부분에 있기 때문에 일정 부분 당신의 애플리케이션에 실질적인 영향을 줄 수 있습니다. 시간을 절약하고 싶으신가요? 업그레이드 자동화를 위해 [Laravel Shift](https://laravelshift.com/)를 이용할 수 있습니다.
-
+
+
+### 의존성 업데이트
-- [Vonage Notification Channel (v3.0)](https://github.com/laravel/vonage-notification-channel/blob/3.x/UPGRADE.md) (Replaces Nexmo)
-- [Vonage 알림 채널 (v3.0)](https://github.com/laravel/vonage-notification-channel/blob/3.x/UPGRADE.md) (Nexmo 대체)
+**영향도 : 높음**
-
+#### PHP 8.1.0 필요
-Finally, examine any other third-party packages consumed by your application and verify you are using the proper version for Laravel 9 support.
+Laravel은 이제 PHP 8.1 이상을 요구합니다.
-마지막으로 애플리케이션에서 사용하는 써드파티 패키지가 라라벨 9 를 지원하는지 확인하십시오.
+#### Composer 2.2.0 필요
-
-#### PHP Return Types
-#### PHP 리턴 타입
+라라벨은 [Composer](https://getcomposer.org) 2.2.0 버전 이상을 요구합니다.
-PHP is beginning to transition to requiring return type definitions on PHP methods such as `offsetGet`, `offsetSet`, etc. In light of this, Laravel 9 has implemented these return types in its code base. Typically, this should not affect user written code; however, if you are overriding one of these methods by extending Laravel's core classes, you will need to add these return types to your own application or package code:
+#### Composer 의존성
-`offsetGet`, `offsetSet`와 같은 PHP 메소드는 리턴타입을 정의하는 형태로 변환되기 시작했습니다. 이에 따라, 라라벨 9에서는 이러한 반환타입을 코드에 구현했습니다. 일반적인 프레임워크 사용자들에게는 영향을 미치지 않습니다. 하지만 라라벨의 핵심 클래스를 확장하여 다음의 메소드 중 하나를 오버라이딩 하였다면, 이러한 반환타입을 애플리케이션이나 패키지에 추가해야합니다.
+`composer.json` 파일에 기재된 애플리케이션의 의존성을 업데이트 해야 합니다.
-- `count(): int`
-- `getIterator(): Traversable`
-- `getSize(): int`
-- `jsonSerialize(): array`
-- `offsetExists($key): bool`
-- `offsetGet($key): mixed`
-- `offsetSet($key, $value): void`
-- `offsetUnset($key): void`
+- `laravel/framework` to `^10.0`
+- `laravel/sanctum` to `^3.2`
+- `doctrine/dbal` to `^3.0`
+- `spatie/laravel-ignition` to `^2.0`
+- `laravel/passport` to `^11.0` ([가이드](https://github.com/laravel/passport/blob/11.x/UPGRADE.md))
-In addition, return types were added to methods implementing PHP's `SessionHandlerInterface`. Again, it is unlikely that this change affects your own application or package code:
+Sanctum 2.x 버전에서 3.x 버전으로 업데이트 하자고 한다면, [Sanctum upgrade guide](https://github.com/laravel/sanctum/blob/3.x/UPGRADE.md)를 참고하세요.
-추가로 PHP의 `SessionHandlerInterface` 에도 반환타입이 추가되었습니다. 다시말하지만, 이러한 변경사항이 여러분의 애플리케이션이나 패키지 코드에 영향을 끼칠 가능성은 거의 없습니다.
+나아가 [PHPUnit 10](https://phpunit.de/announcements/phpunit-10.html)를 사용하고자 한다면, `phpunit.xml` 설정 파일에 있는 `` 섹션에서 `processUncoveredFiles` 속성을 삭제하세요. 그런 다음 `composer.json` 파일 내 아래 의존성을 업데이트 하세요.
-- `open($savePath, $sessionName): bool`
-- `close(): bool`
-- `read($sessionId): string|false`
-- `write($sessionId, $data): bool`
-- `destroy($sessionId): bool`
-- `gc($lifetime): int`
+- `nunomaduro/collision` to `^7.0`
+- `phpunit/phpunit` to `^10.0`
-
-### Application
-### 애플리케이션
-
-
-#### The `Application` Contract
-#### `Application` 인터페이스
-
-**Likelihood Of Impact: Low**
-**영향 가능성: 낮음**
-
-The `storagePath` method of the `Illuminate\Contracts\Foundation\Application` interface has been updated to accept a `$path` argument. If you are implementing this interface you should update your implementation accordingly:
-
-`Illuminate\Contracts\Foundation\Application` 인터페이스의 `storagePath` 메소드가 `$path` 인자를 전달받을 수 있도록 변경되었습니다. 이 인터페이스를 구현하고 있다면 다음과 같은 구현을 업데이트해야합니다.
-
- public function storagePath($path = '');
-
-Similarly, the `langPath` method of the `Illuminate\Foundation\Application` class has been updated to accept a `$path` argument:
-
-마찬가지로 `Illuminate\Foundation\Application` 클래스의 `langPath` 메소드가 `$path` 인자를 전달받을 수 있도록 변경되었습니다.
+마지막으로 서드파티 패키지를 검사하고 해당 패키지들이 Laravel 10을 지원하는지 확인하세요
- public function langPath($path = '');
+
-#### Exception Handler `ignore` Method
-#### Exception Handler `ignore` 메소드
+#### Minimum Stability
-**Likelihood Of Impact: Low**
-**영향 가능성: 낮음**
-
-The exception handler's `ignore` method is now `public` instead of `protected`. This method is not included in the default application skeleton; however, if you have manually defined this method you should update its visibility to `public`:
-
-예외-exception 핸들러의 `ignore` 메소드는 이제 `protected` 대신 `public`이 되었습니다. 이 메소드는 애플리케이션의 기본적인 코드에는 포함되어 있지 않습니다만, 수동으로 이 메소드를 정의하였다면 다음과 같이 `public` 으로 변경해야합니다.
+`composer.json` 파일 내에 `minimum-stability` 속성을 `stable`로 바꿔주어야 합니다. `minimum-stability`의 기본값이 `stable`이므로 해당 설정을 삭제하셔도 됩니다.
-```php
-public function ignore(string $class);
+```json
+"minimum-stability": "stable",
```
-#### Exception Handler Contract Binding
-#### 예외 핸들러 컨트랙트 바인딩
-
-**Likelihood Of Impact: Very Low**
-**영향 가능성: 매우 낮음**
-
-Previously, in order to override the default Laravel exception handler, custom implementations were bound into the service container using the `\App\Exceptions\Handler::class` type. However, you should now bind custom implementations using the `\Illuminate\Contracts\Debug\ExceptionHandler::class` type.
-
-이전에는 기본 Laravel 예외 처리기를 재정의하기 위해 사용자 정의 구현이 `\App\Exceptions\Handler::class` 타입을 사용하여 서비스 컨테이너에 바인딩되었습니다 . 그러나 이제 `\Illuminate\Contracts\Debug\ExceptionHandler::class` 유형을 사용하여 사용자 정의 구현을 바인딩해야 합니다.
-
-### Blade
-### 블레이드 템플릿
-
-#### Lazy Collections & The `$loop` Variable
-#### 지연 컬렉션 & `$loop` 변수
-
-**Likelihood Of Impact: Low**
-**영향 가능성: 낮음**
-
-When iterating over a `LazyCollection` instance within a Blade template, the `$loop` variable is no longer available, as accessing this variable causes the entire `LazyCollection` to be loaded into memory, thus rendering the usage of lazy collections pointless in this scenario.
-
-블레이드 템플릿 안에서 `LazyCollection` 인스턴스의 반복문을 처리할 때에는 `$loop` 변수는 더 이상 사용할 수 없습니다. 그 이유는 `$loop` 변수에 접근하게 되면 `LazyCollection` 전체가 메모리에 로딩되기 때문에 지연 컬렉션의 사용 이유가 무색해지기 대문입니다.
-
-#### Checked / Disabled / Selected Blade Directives
-#### Checked / Disabled / Selected 블레이드 지시어
-
-**Likelihood Of Impact: Low**
-**영향 가능성: 낮음**
-
-The new `@checked`, `@disabled`, and `@selected` Blade directives may conflict with Vue events of the same name. You may use `@@` to escape the directives and avoid this conflict: `@@selected`.
-
-새 `@checked`, `@disabled`, `@selected` 블레이드 지시어는 같은 이름의 Vue 이벤트와 충돌을 일으킬 수 있습니다. 충돌을 피하기 위해서 `@@`를 사용할 수 있습니다. 예 `@@selected`
+### Application
-### Collections
-### 컬렉션
+
-#### The `Enumerable` Contract
-#### `Enumerable` 인터페이스
+#### Public 경로 바인딩
**Likelihood Of Impact: Low**
-**영향 가능성: 낮음**
-
-The `Illuminate\Support\Enumerable` contract now defines a `sole` method. If you are manually implementing this interface, you should update your implementation to reflect this new method:
+**영향도 : 낮음**
-`Illuminate\Support\Enumerable` 인터페이스가 `sole` 메소드를 정의합니다. 수동으로 이 인터페이스를 구현하였다면 다음의 시그니처를 구현하도록 업데이트 해야합니다.
+If your application is customizing its "public path" by binding `path.public` into the container, you should instead update your code to invoke the `usePublicPath` method offered by the `Illuminate\Foundation\Application` object:
+애플리케이션에 `path.public`를 바인딩하여 "public 경로"를 수정하고 싶다면, `Illuminate\Foundation\Application`가 제공하는 `usePublicPath` 메서드를 호출하여야 합니다.
```php
-public function sole($key = null, $operator = null, $value = null);
+app()->usePublicPath(__DIR__.'/public');
```
-#### The `reduceWithKeys` Method
-#### `reduceWithKeys` 메소드
-
-The `reduceWithKeys` method has been removed as the `reduce` method provides the same functionality. You may simply update your code to call `reduce` instead of `reduceWithKeys`.
-
-`reduceWithKeys` 메소드는 제거되고 `reduce` 메소드가 동일한 역할을 수행합니다. `reduceWithKeys` 메소드 대신 `reduce` 메소드를 사용하도록 업데이트 하십시오.
-
-#### The `reduceMany` Method
-#### `reduceMany` 메소드
-
-The `reduceMany` method has been renamed to `reduceSpread` for naming consistency with other similar methods.
-
-`reduceSpread` 메소드의 이름이 `reduceMany`으로 변경되었습니다.
-
-### Container
-### 컨테이너
+### 인증
-#### The `Container` Contract
-#### `Container` 인터페이스
-
-**Likelihood Of Impact: Very Low**
-**영향 가능성: 매우 낮음**
-
-The `Illuminate\Contracts\Container\Container` contract has received two method definitions: `scoped` and `scopedIf`. If you are manually implementing this contract, you should update your implementation to reflect these new methods.
-
-`Illuminate\Contracts\Container\Container` 인터페이스에 두개의 메소드 `scoped` 및 `scopedIf`가 추가되었습니다. 수동으로 이 인터페이스를 구현하였다면, 새로운 메소드를 구현하도록 업데이트 하십시오.
-
-#### The `ContextualBindingBuilder` Contract
-#### `ContextualBindingBuilder` 인터페이스
-
-**Likelihood Of Impact: Very Low**
-**영향 가능성: 매우 낮음**
-
-The `Illuminate\Contracts\Container\ContextualBindingBuilder` contract now defines a `giveConfig` method. If you are manually implementing this interface, you should update your implementation to reflect this new method:
-
-`Illuminate\Contracts\Container\ContextualBindingBuilder` 인터페이스에 `giveConfig` 메소드가 추가되었습니다. 수동으로 이 인터페이스를 구현하였다면 다음의 메소드를 구현하도록 업데이트 하십시오.
-
-```php
-public function giveConfig($key, $default = null);
-```
-
-### Database
-### 데이터베이스
-
-
-#### Postgres "Schema" Configuration
-#### Postgres "스키마" 설정
-
-**Likelihood Of Impact: Medium**
-**영향 가능성: 중간**
+
-The `schema` configuration option used to configure Postgres connection search paths in your application's `config/database.php` configuration file should be renamed to `search_path`.
-
-애플리케이션의 `config/database.php` 설정파일에서 Postgres 커넥션 검색 경로를 설정하는데 사용하는 `schema` 옵션값은 `search_path` 으로 이름이 변경되었습니다.
-
-
-#### Schema Builder `registerCustomDoctrineType` Method
-#### 스키마 빌더의 `registerCustomDoctrineType` 메소드
+### `registerPolicies` 메소드
**Likelihood Of Impact: Low**
-**영향 가능성: 낮음**
-
-The `registerCustomDoctrineType` method has been removed from the `Illuminate\Database\Schema\Builder` class. You may use the `registerDoctrineType` method on the `DB` facade instead, or register custom Doctrine types in the `config/database.php` configuration file.
-
-`Illuminate\Database\Schema\Builder` 클래스의 `registerCustomDoctrineType` 메소드가 제거되었습니다. 대신 `DB` 파사드의 `registerDoctrineType` 메소드를 사용하거나 `config/database.php` 설정 파일에서 커스텀 Doctrine 타입을 등록할 수 있습니다.
-
-### Eloquent
-### 엘로퀀트
-
-
-#### Custom Casts & `null`
-#### Custom Casts & `null`
-
-**Likelihood Of Impact: Medium**
-**영향 가능성: 중간**
+**영향도 : 낮음**
-In previous releases of Laravel, the `set` method of custom cast classes was not invoked if the cast attribute was being set to `null`. However, this behavior was inconsistent with the Laravel documentation. In Laravel 9.x, the `set` method of the cast class will be invoked with `null` as the provided `$value` argument. Therefore, you should ensure your custom casts are able to sufficiently handle this scenario:
+`AuthServiceProvider` 내 `registarPolicies` 메소드는 프레임워크에 의해 자동으로 호출됩니다. 그러므로 `AuthServiceProvider`의 `boot` 메서드에서 해당 메서드 호출은 삭제해주세요.
-라라벨의 이전 버전에서는 커스텀 캐스트 클래스의 `set` 메소드는 캐스트 속성이 `null` 로 지정되는 경우에는 호출되지 않았습니다. 그러나 이 동작은 라라벨 매뉴얼과 일치하지 않는 문제가 있어서 라라벨 9.X 부터는 캐스트 클래스의 메소드에 `$value` 인자가 `null` 로 지정되어 호출됩니다. 따라서 커스텀 캐스트가 의도대로 동작하는지 확인하시길 바랍니다.
+### 캐시
-```php
-/**
- * Prepare the given value for storage.
- *
- * @param \Illuminate\Database\Eloquent\Model $model
- * @param string $key
- * @param AddressModel $value
- * @param array $attributes
- * @return array
- */
-public function set($model, $key, $value, $attributes)
-{
- if (! $value instanceof AddressModel) {
- throw new InvalidArgumentException('The given value is not an Address instance.');
- }
-
- return [
- 'address_line_one' => $value->lineOne,
- 'address_line_two' => $value->lineTwo,
- ];
-}
-```
+
-
-#### Belongs To Many `firstOrNew`, `firstOrCreate`, and `updateOrCreate` Methods
-#### 다대다 연관관계의 `firstOrNew`, `firstOrCreate`, `updateOrCreate` 메소드
+#### Redis 캐시 태그
**Likelihood Of Impact: Medium**
-**영향 가능성: 중간**
-
-The `belongsToMany` relationship's `firstOrNew`, `firstOrCreate`, and `updateOrCreate` methods all accept an array of attributes as their first argument. In previous releases of Laravel, this array of attributes was compared against the "pivot" / intermediate table for existing records.
+**영향도 : 중간**
-`belongsToMany` 연관관계의 `firstOrNew`, `firstOrCreate`, `updateOrCreate` 메소드는 첫 번째 인자로 속성값을 담은 배열을 인자로 전달받습니다. 이전버전까지는 이 속성값 배열을 기존 레코드의 "피벗" / 중간 테이블과 비교하였습니다.
+Redis [cache tag](/docs/{{version}}/cache#cache-tags) 지원이 더 나은 성능과 저장 효율을 위해 다시 짜여졌습니다. 이전 라라벨 버전에서는, Redis를 캐시 드라이버로 사용하는 경우 stale 캐시도 누적되었습니다.
-However, this behavior was unexpected and typically unwanted. Instead, these methods now compare the array of attributes against the table of the related model:
-
-그렇지만, 이 동작이 의도하지 않은 것이었고 일반적으로 원하지 않는 동작이라고 판단하여 연관된 모델 테이블과 속성 배열을 비교하도록 변경되었습니다.
-
-```php
-$user->roles()->updateOrCreate([
- 'name' => 'Administrator',
-]);
-```
+그러나 stale 캐시를 적절하게 삭제하기 위해 새로운 `cache:prune-stale-tags` 아티잔 커맨드가 `App\Console\Kernel` 클래스 내에 실행 예정되어 있습니다.
-In addition, the `firstOrCreate` method now accepts a `$values` array as its second argument. This array will be merged with the first argument to the method (`$attributes`) when creating the related model if one does not already exist. This change makes this method consistent with the `firstOrCreate` methods offered by other relationship types:
+ $schedule->command('cache:prune-stale-tags')->hourly();
-추가적으로 `firstOrCreate` 메소드는 `$values` 배열을 두 번째 인자로 전달 받을 수 있습니다. 이 배열은 존재하지 않는 연관 모델을 생성할 때 메소드의 첫 번째 인자(`$attributes`)와 머지됩니다. 이러한 변경사항을 통해서 `firstOrCreate` 메소드가 다른 연관관계에서 제공하는 메소드와 동일한 형식을 갖추게 되었습니다.
-
-```php
-$user->roles()->firstOrCreate([
- 'name' => 'Administrator',
-], [
- 'created_by' => $user->id,
-]);
-```
-
-#### The `touch` Method
-#### `touch` 메소드
-
-**Likelihood Of Impact: Low**
-**영향 가능성: 낮음**
-
-The `touch` method now accepts an attribute to touch. If you were previously overwriting this method, you should update your method signature to reflect this new argument:
-
-`touch` 메소드는 이제 동작을 위한 속성값을 인자로 전달 받을 수 있습니다. 이 메소드를 오버라이딩 하는 코드를 작성하였다면 다음의 메소드 시그니처를 구현하도록 업데이트 해야합니다.
-
-```php
-public function touch($attribute = null);
-```
+### 데이터베이스
-### Encryption
-### 암호화
+
-#### The Encrypter Contract
-#### Encrypter 인터페이스
+#### 데이터베이스 구문
-**Likelihood Of Impact: Low**
-**영향 가능성: 낮음**
+**Likelihood Of Impact: Medium**
+**영향도: 중간**
-The `Illuminate\Contracts\Encryption\Encrypter` contract now defines a `getKey` method. If you are manually implementing this interface, you should update your implementation accordingly:
+(보통 `DB::raw` 형태로 생성되는) 데이터베이스 "구문"이 추가적인 기능을 제공하기 위해 새로 짜여졌습니다. 특히 `getValue(Grammar $grammer)` 메소드 구문을 통해 DB 문법을 따르는 문자열이 제공되어야 한다는 점입니다. `(string)`을 사용해 데이터베이스 표현을 제공하는 방식은 더 이상 지원되지 않습니다.
-`Illuminate\Contracts\Encryption\Encrypter` 인터페이스가 `getKey` 메소드 정의가 추가되었습니다. 이 인터페이스를 수동으로 구현하였다면, 다음의 메소드를 구현하도록 업데이트 해야합니다.
+**일반적으로 최종 사용자용 애플리케이션에는 영향을 주지 않습니다**; 그러나, 당신의 애플리케이션이 `(string)` 으로 수동으로 데이터베이스 구문을 제공하고 있거나 `__toString`을 호출하여 데이터베이스 구문을 직접 사용하고 있다면, `getValue` 메소드를 호출하도록 코드를 수정해야 합니다.
```php
-public function getKey();
-```
-
-### Facades
-### 파사드
-
-#### `getFacadeAccessor` 메소드
+use Illuminate\Support\Facades\DB;
-**Likelihood Of Impact: Low**
-**영향 가능성: 낮음**
-
-The `getFacadeAccessor` method must always return a container binding key. In previous releases of Laravel, this method could return an object instance; however, this behavior is no longer supported. If you have written your own facades, you should ensure that this method returns a container binding string:
-
-`getFacadeAccessor` 메소드는 항상 컨테이너 바인딩 키를 반환해야합니다. 이전 버전까지는 이 메소드는 객체 인스턴스를 반환할 수 있었습니다. 하지만 이런 동작은 더 이상 지원하지 않습니다. 만약 파사드를 구현하였고 객체를 반환하는 방식을 사용하였다면 컨테이너 바인딩 문자열을 반환하도록 업데이트 해야합니다.
+$expression = DB::raw('select 1');
-```php
-/**
- * Get the registered name of the component.
- *
- * @return string
- */
-protected static function getFacadeAccessor()
-{
- return Example::class;
-}
+$string = $expression->getValue(DB::connection()->getQueryGrammar());
```
-### Filesystem
-### 파일시스템
+
-#### The `FILESYSTEM_DRIVER` Environment Variable
-#### `FILESYSTEM_DRIVER` 환경변수
+#### 쿼리 예외 생성자
-**Likelihood Of Impact: Low**
-**영향 가능성: 낮음**
+**Likelihood Of Impact: Very Low**
+**영향도 : 매우 낮음**
-The `FILESYSTEM_DRIVER` environment variable has been renamed to `FILESYSTEM_DISK` to more accurately reflect its usage. This change only affects the application skeleton; however, you are welcome to update your own application's environment variables to reflect this change if you wish.
+The `Illuminate\Database\QueryException` constructor now accepts a string connection name as its first argument. If your application is manually throwing this exception, you should adjust your code accordingly.
+`Illuminate\Database\QueryException` 생성자는 첫 번째 인자로 문자열 타입 연결명을 받습니다. 수동으로 해당 예외를 던지고 있다면, 이에 맞게 코드를 수정해주세요.
-보다 정확한 의미전달을 위해서 `FILESYSTEM_DRIVER` 환경 변수가 `FILESYSTEM_DISK` 으로 이름이 변경되었습니다. 이 변경사항은 애플리케이션 스켈레톤에만 영향을 줍니다. 원한다면 애플리케이션에 이 변경사항을 적용하여 업데이트 하십시오.
+
-#### The "Cloud" Disk
-#### "Cloud" 디스크
+#### ULID Columns
**Likelihood Of Impact: Low**
-**영향 가능성: 낮음**
-
-The `cloud` disk configuration option was removed from the default application skeleton in November of 2020. This change only affects the application skeleton. If you are using the `cloud` disk within your application, you should leave this configuration value in your own application's skeleton.
+**영향도 : 낮음**
-2020년 11월 기본 애플리케이션의 스켈레톤에서 `cloud` 디스크 설정 옵션이 제거되었습니다. 이 변경사항은 애플리케이션 스켈레톤에만 영향을 미칩니다. 애플리케이션에서 `cloud` 디스크를 사용하는 경우에는 이 설정 값을 그대로 두시기 바랍니다.
+`ulid` 메소드를 인자 없이 호출할 경우, 컬럼명은 `ulid`가 될 것입니다. 이전 라라벨 버전에서는 인자 없이 이 함수를 호출하면 `uuid`로 틀리게 컬럼이 생성되었습니다.
-
-### Flysystem 3.x
-### Flysystem 3.x
+ $table->ulid();
-**Likelihood Of Impact: High**
-**영향 가능성: 높음**
+`ulid` 함수 호출 시 컬럼명을 명시하고자 한다면, 컬럼명을 인자로 던져주세요.
-Laravel 9.x has migrated from [Flysystem](https://flysystem.thephpleague.com/v2/docs/) 1.x to 3.x. Under the hood, Flysystem powers all of the file manipulation methods provided by the `Storage` facade. In light of this, some changes may be required within your application; however, we have tried to make this transition as seamless as possible.
+ $table->ulid('ulid');
-라라벨 9.x 에서는 [Flysystem](https://flysystem.thephpleague.com/v2/docs/)을 1.x 에서 3.x으로 마이그레이션하였습니다. 내부적으로 Flysystem은 `Storage` 파사드에서 제공하는 파일을 다루는 모든 메소드를 제공합니다. Flysystem의 버전 변경으로 인해서 애플리케이션의 일부 코드가 영향을 받을 수도 있습니다. 라라벨 9 에서는 이러한 영향이 없게끔 원활한 작업을 지원하도록 노력하였습니다.
-
-#### Driver Prerequisites
-#### 드라이버 필요사항
-
-Before using the S3, FTP, or SFTP drivers, you will need to install the appropriate package via the Composer package manager:
-
-S3, FTP, SFTP 드라이버를 사용하기 전에 다음의 컴포저 패키지를 설치해야합니다.
-
-- Amazon S3: `composer require -W league/flysystem-aws-s3-v3 "^3.0"`
-- FTP: `composer require league/flysystem-ftp "^3.0"`
-- SFTP: `composer require league/flysystem-sftp-v3 "^3.0"`
-
-#### Overwriting Existing Files
-#### 기존에 존재하는 파일 덮어쓰기
-
-Write operations such as `put`, `write`, and `writeStream` now overwrite existing files by default. If you do not want to overwrite existing files, you should manually check for the file's existence before performing the write operation.
+### Eloquent
-`put`, `write`, `writeStream`와 같은 쓰기 작업은 이제 기본적으로 기존 파일을 덮어쓰는 형태로 동작합니다. 기존 파일을 덮어쓰지 않으려면 쓰기 작업을 수행하기 전에 파일의 존재를 수동으로 확인해야 합니다.
+
-#### Write Exceptions
-#### 쓰기에서 예외 발생
+#### "Dates" 모델 속성
-Write operations such as `put`, `write`, and `writeStream` no longer throw an exception when a write operation fails. Instead, `false` is returned. If you would like to preserve the previous behavior which threw exceptions, you may define the `throw` option within a filesystem disk's configuration array:
+**영향도 : 중간**
-`put`, `write`, `writeStream`와 같은 쓰기 작업은 더 이상 작업 실패시에 예외를 발생시키지 않습니다. 대신 `false` 가 반환됩니다. 이전처럼 작업에 실패하였을 때 예외가 발생하길 원한다면 다음과 같이 파일시스템 디스크 설정 배열의 `throw` 옵션을 정의하면 됩니다.
+삭제된 Eloquent 모델의 `$dates` 속성이 삭제되었습니다. 애플리케이션은 `$casts` 속성을 사용해야 합니다.
```php
-'public' => [
- 'driver' => 'local',
- // ...
- 'throw' => true,
-],
+protected $casts = [
+ 'deployed_at' => 'datetime',
+];
```
-#### Reading Missing Files
-#### 찾을 수 없는 파일 읽기
-
-Attempting to read from a file that does not exist now returns `null`. In previous releases of Laravel, an `Illuminate\Contracts\Filesystem\FileNotFoundException` would have been thrown.
-
-찾을 수 없는 파일을 읽으려는 시도가 있는 경우 `null` 이 반환됩니다. 라라벨의 이전 버전까지는 `Illuminate\Contracts\Filesystem\FileNotFoundException`가 발생했습니다.
+
-#### Deleting Missing Files
-#### 찾을 수 없는 파일 삭제
+#### `getBaseQuery` Relation 메소드
-Attempting to `delete` a file that does not exist now returns `true`.
+**영향도 : 매우 낮음**
-찾을 수 없는 파일에 대해서 `delete` 메소드를 실행하면 `true`가 반환됩니다.
+`Illuminate\Database\Eloquent\Relations\Relation` 클래스 내 `getBaseQuery` 메소드는 `toBase`로 함수명이 변경되었습니다.
-#### Cached Adapters
-#### 캐싱된 어댑터
+### Localization
-Flysystem no longer supports "cached adapters". Thus, they have been removed from Laravel and any relevant configuration (such as the `cache` key within disk configurations) can be removed.
+
-Flysystem은 "캐싱된 어댑터"를 더이상 지원하지 않습니다. 라라벨에서 관련 기능이 제거되었기 때문에 연관된 설정 내용 (디스크 설정 파일에서 `cache` 키)도 제거되었습니다.
+#### Language 디렉토리
-#### Custom Filesystems
-#### 커스텀 파일시스템
+**영향도 : 낮음**
-Slight changes have been made to the steps required to register custom filesystem drivers. Therefore, if you were defining your own custom filesystem drivers, or using packages that define custom drivers, you should update your code and dependencies.
+이미 생성된 애플리케이션과는 무관하지만, 라라벨 애플리케이션 뼈대는 더 이상 `lang` 디렉토리를 포함하지 않습니다. 대신 새 라라벨 애플리케이션을 생성하는 경우 `lang:publish` 아티잔 커맨드를 이용하여 생성될 수 있습니다.
-커스텀 파일시스템을 등록하는데 필요한 단계가 약간 변경되었습니다. 따라서 커스텀 파일시스템 드라이버를 정의하거나 커스텀 드라이버를 정의하는 패키지를 사용한 경우 관련 코드와 의존성을 업데이트 해야합니다.
-
-For example, in Laravel 8.x, a custom filesystem driver might be registered like so:
-
-예를 들어, 라라벨 8.x 에서는 커스텀 파일시스템 드라이버는 다음과 같이 등록하였습니다.
-
-```php
-use Illuminate\Support\Facades\Storage;
-use League\Flysystem\Filesystem;
-use Spatie\Dropbox\Client as DropboxClient;
-use Spatie\FlysystemDropbox\DropboxAdapter;
-
-Storage::extend('dropbox', function ($app, $config) {
- $client = new DropboxClient(
- $config['authorization_token']
- );
-
- return new Filesystem(new DropboxAdapter($client));
-});
+```shell
+php artisan lang:publish
```
-However, in Laravel 9.x, the callback given to the `Storage::extend` method should return an instance of `Illuminate\Filesystem\FilesystemAdapter` directly:
+### Logging
-그렇지만 라라벨 9.x 부터는 `Storage::extend` 메소드에 전달되는 콜백은 `Illuminate\Filesystem\FilesystemAdapter` 타입의 인스턴스를 반환해야합니다.
+
-```php
-use Illuminate\Filesystem\FilesystemAdapter;
-use Illuminate\Support\Facades\Storage;
-use League\Flysystem\Filesystem;
-use Spatie\Dropbox\Client as DropboxClient;
-use Spatie\FlysystemDropbox\DropboxAdapter;
-
-Storage::extend('dropbox', function ($app, $config) {
- $adapter = new DropboxAdapter(
- new DropboxClient($config['authorization_token'])
- );
-
- return new FilesystemAdapter(
- new Filesystem($adapter, $config),
- $adapter,
- $config
- );
-});
-```
+#### Monolog 3
-### Helpers
-### 헬퍼함수
+**영향도 : 중간**
-
-#### The `data_get` Helper & Iterable Objects
-#### `data_get` 헬퍼함수 & 반복 가능한 객체
+라라벨의 Monolog 의존성은 Monolog 3.x 버전으로 업데이트 되었습니다. Monolog와 직접 상호작용한다면, Monolog의 [upgrade guide](https://github.com/Seldaek/monolog/blob/main/UPGRADE.md) 살펴보시기를 권장합니다.
-**Likelihood Of Impact: Very Low**
-**영향 가능성: 매우 낮음**
+만약 BugSnag 이나 Rollbar와 같은 서드 파티 로깅 서비스를 이용하고 있다면 해당 서드파티 패키지를 Monolog 3.x 및 Laravel 10.x 버전에 맞게 업그레이드 해야할 수 있습니다.
-Previously, the `data_get` helper could be used to retrieve nested data on arrays and `Collection` instances; however, this helper can now retrieve nested data on all iterable objects.
+### Queues
-이전까지는 `data_get` 헬퍼함수를 사용하여 배열이나 `컬렉션` 인스턴스에서만 중첩된 데이터를 조회하는데 사용이 가능했습니다. 하지만 이 헬퍼는 모든 반복가능한 객체에서 중첩된 데이터의 조회가 가능합니다.
+
-
-#### The `str` Helper
-#### `str` 헬퍼함수
+#### `Bus::dispatchNow` 메소드
-**Likelihood Of Impact: Very Low**
-**영향 가능성: 매우 낮음**
+**영향도 : 낮음**
-Laravel 9.x now includes a global `str` [helper function](/docs/{{version}}/helpers#method-str). If you are defining a global `str` helper in your application, you should rename or remove it so that it does not conflict with Laravel's own `str` helper.
+`Bus::dispatchNow`와 `dispatch_now` 메소드가 삭제되었습니다. 대신 `Bus::dispatchSync`와 `dispatch_sync` 메소드를 사용하세요.
-라라벨 9.x 에서는 글로벌 `str` [헬퍼함수](/docs/{{version}}/helpers#method-str)가 포함되어 있습니다. 애플리케이션에서 별도로 `str` 헬퍼를 정의하였다면 라라벨의 `str` 헬퍼함수와 충돌하지 않도록 이름을 변경하거나 제거해야합니다.
+### Routing
-
-#### The `when` / `unless` Methods
-#### `when` / `unless` 메소드
+
-**Likelihood Of Impact: Medium**
-**영향 가능성: 중간**
-
-As you may know, `when` and `unless` methods are offered by various classes throughout the framework. These methods can be used to conditionally perform an action if the boolean value of the first argument to the method evaluates to `true` or `false`:
+#### 미들웨어 별칭
-`when` 과 `unless` 메소드는 프레임워크 전반에 걸쳐서 다양한 클레스에서 사용됩니다. 이 메소드는 첫 번째 인자로 전달되는 불리언값(true / false)에 따라서 선택적으로 액션을 수행하는 용도로 사용됩니다.
+**영향도 : 선택적**
-```php
-$collection->when(true, function ($collection) {
- $collection->merge([1, 2, 3]);
-});
-```
+새로운 라라벨 애플리케이션에서 `App\Http\Kernel` 클래스 내 `$routeMiddleware` 속성이 목적에 맞게 `$middlewareAliases`로 변경되었습니다. 사용중인 애플리케이션에서도 속성명을 바꾸는 것이 좋지만, 꼭 필요한 것은 아닙니다.
-Therefore, in previous releases of Laravel, passing a closure to the `when` or `unless` methods meant that the conditional operation would always execute, since a loose comparison against a closure object (or any other object) always evaluates to `true`. This often led to unexpected outcomes because developers expect the **result** of the closure to be used as the boolean value that determines if the conditional action executes.
+
-그래서, 이전버전까지의 라라벨에서는 첫 번째 인자로 클로저를 전달할 때 이 클로저가(그리고 다른 객체들이) PHP 언어의 느슨한 비교 연산을 통해서 `true`로 간주되어서 액션이 항상 수행되었습니다. 개발자는 클로저의 실행 **결과**에 따라서 액션이 실행되기를 기대하기 때문에 종종 의도하지 않은 결과를 발생시켰습니다.
+#### Rate Limiter 반환 값
-So, in Laravel 9.x, any closures passed to the `when` or `unless` methods will be executed and the value returned by the closure will be considered the boolean value used by the `when` and `unless` methods:
+**영향도 : 낮음**
-따라서 라라벨 9.X 부터는 `when` 이나 `unless` 메소드에 전달되는 클로저는 클로저의 실행결과 값에 따라서 이후의 액션이 실행되도록 변경되었습니다.
+When invoking the `RateLimiter::attempt` method, the value returned by the provided closure will now be returned by the method. If nothing or `null` is returned, the `attempt` method will return `true`:
+`RateLimiter::attempt` 메소드를 호출할 때 인자로 제공된 클로저에 의해 반환된 값은 메소드로 반환됩니다. 반환된 값이 없거나 `null`인 경우, `attempt` 메소드는 `true`를 반환합니다.
```php
-$collection->when(function ($collection) {
- // This closure is executed...
- return false;
-}, function ($collection) {
- // Not executed since first closure returned "false"...
- $collection->merge([1, 2, 3]);
-});
-```
-
-### HTTP Client
-### HTTP Client
-
-
-#### Default Timeout
-#### Timeout 기본값
-
-**Likelihood Of Impact: Medium**
-**영향 가능성: 중간**
-
-The [HTTP client](/docs/{{version}}/http-client) now has a default timeout of 30 seconds. In other words, if the server does not respond within 30 seconds, an exception will be thrown. Previously, no default timeout length was configured on the HTTP client, causing requests to sometimes "hang" indefinitely.
-
-[HTTP client](/docs/{{version}}/http-client)는 이제 타임아웃 기본값으로 30초를 지정합니다. 다시말해 서버가 30초 이내에 응답하지 않으면 예외가 발생합니다. 이전까지는 타임아웃 기본값이 설정되어 있지 않아서 때대로 요청이 계속 유지되는 문제가 있었습니다.
-
-If you wish to specify a longer timeout for a given request, you may do so using the `timeout` method:
-
-다른 서버로 요청을 보낼 때 기본값 보다 더 긴 타임아웃을 지정하려면 `timeout` 메소드를 사용하면 됩니다.
-
- $response = Http::timeout(120)->get(/* ... */);
-
-#### HTTP Fake & Middleware
-#### HTTP Fake & 미들웨어
-
-**Likelihood Of Impact: Low**
-**영향 가능성: 낮음**
-
-Previously, Laravel would not execute any provided Guzzle HTTP middleware when the [HTTP client](/docs/{{version}}/http-client) was "faked". However, in Laravel 9.x, Guzzle HTTP middleware will be executed even when the HTTP client is faked.
-
-이전버전에서는 라라벨이 [HTTP client](/docs/{{version}}/http-client)가 "fake"로 취급될 때 제공된 Guzzle HTTP 미들웨어를 실행하지 않았습니다. 하지만 라라벨 9.x 부터는 Guzzle HTTP 미들웨어가 실행됩니다.
-
-#### HTTP Fake & Dependency Injection
-#### HTTP Fake & 의존성 주입
-
-**Likelihood Of Impact: Low**
-**영향 가능성: 낮음**
-
-In previous releases of Laravel, invoking the `Http::fake()` method would not affect instances of the `Illuminate\Http\Client\Factory` that were injected into class constructors. However, in Laravel 9.x, `Http::fake()` will ensure fake responses are returned by HTTP clients injected into other services via dependency injection. This behavior is more consistent with the behavior of other facades and fakes.
-
-라라벨의 이전 릴리즈에서는 `Http::fake()` 메소드를 호출해도 메소드를 호출해도 클래스 생성자에 주입된 `Illuminate\Http\Client\Factory` 인스턴스에 영향을 미치지 않았습니다. 하지만 라라벨 9.x 에서 `Http::fake()`는 의존성 주입을 통해 다른 서비스에 주입된 HTTP 클라이언트에 의해서 Fake 응답이 반환되도록 동작합니다. 이 동작은 다른 파사드와 Fake 에서도 동일합니다.
-
-
-### Symfony Mailer
-### Symfony 메일러
-
-**Likelihood Of Impact: High**
-**영향 가능성: 높음**
+$value = RateLimiter::attempt('key', 10, fn () => ['example'], 1);
-One of the largest changes in Laravel 9.x is the transition from SwiftMailer, which is no longer maintained as of December 2021, to Symfony Mailer. However, we have tried to make this transition as seamless as possible for your applications. That being said, please thoroughly review the list of changes below to ensure your application is fully compatible.
-
-라라벨 9.x의 가장 큰 변경사항 중 하나는 2021년 12월 현재 더 이상 관리되고 있지 않은 SwiftMailer를 대체하여 Symfony 메일러를 도입한 것입니다. 애플리케이션에서 가능한 문제없이 활용될 수 있도록 노력하였습니다만 아래의 변경사항 목록을 확인하여 애플리케이션에 호환되는지 확인하시기 바랍니다.
-
-#### Driver Prerequisites
-#### 드라이버 사전 준비사항
-
-To continue using the Mailgun transport, your application should require the `symfony/mailgun-mailer` and `symfony/http-client` Composer packages:
-
-Mailgun을 통해서 이메일을 전송하려면 애플리케이션에 `symfony/mailgun-mailer` 및 `symfony/http-client` 컴포저 패키지를 설치해야합니다.
-
-```shell
-composer require symfony/mailgun-mailer symfony/http-client
-```
-
-The `wildbit/swiftmailer-postmark` Composer package should be removed from your application. Instead, your application should require the `symfony/postmark-mailer` and `symfony/http-client` Composer packages:
-
-애플리케이션에서 `wildbit/swiftmailer-postmark` 컴포저 패키지는 삭제해야합니다. 대신 `symfony/postmark-mailer` 및 `symfony/http-client` 컴포저 패키지가 필요합니다.
-
-```shell
-composer require symfony/postmark-mailer symfony/http-client
+$value; // ['example']
```
-#### Updated Return Types
-#### 반환 타입 업데이트
-
-The `send`, `html`, `raw`, and `plain` methods on `Illuminate\Mail\Mailer` no longer return `void`. Instead, an instance of `Illuminate\Mail\SentMessage` is returned. This object contains an instance of `Symfony\Component\Mailer\SentMessage` that is accessible via the `getSymfonySentMessage` method or by dynamically invoking methods on the object.
-
-`Illuminate\Mail\Mailer`의 `send`, `html`, `raw`, `plain` 메소드는 더 이상 `void`를 반환하지 않습니다. 그대신 `Illuminate\Mail\SentMessage` 인스턴스가 반환됩니다. 이 객체는 `getSymfonySentMessage` 메소드 또는 객체에 동적 메소드 호출을 사용해서 접근할 수 있는 `Symfony\Component\Mailer\SentMessage` 인스턴스를 포함하고 있습니다.
-
-#### Renamed "Swift" Methods
-#### "Swift" 메소드의 이름 변경
-
-Various SwiftMailer related methods, some of which were undocumented, have been renamed to their Symfony Mailer counterparts. For example, the `withSwiftMessage` method has been renamed to `withSymfonyMessage`:
-
-매뉴얼에 기록되지 않은 다양한 SwiftMailer 관련 메소드는 Symfony Mailer 를 사용한 방식으로 이름이 변경되었습니다. 예를 들어 `withSwiftMessage` 메소드는 `withSymfonyMessage`로 이름이 변경되었습니다.
-
- // Laravel 8.x...
- $this->withSwiftMessage(function ($message) {
- $message->getHeaders()->addTextHeader(
- 'Custom-Header', 'Header Value'
- );
- });
-
- // Laravel 9.x...
- use Symfony\Component\Mime\Email;
-
- $this->withSymfonyMessage(function (Email $message) {
- $message->getHeaders()->addTextHeader(
- 'Custom-Header', 'Header Value'
- );
- });
-
-> {note} Please thoroughly review the [Symfony Mailer documentation](https://symfony.com/doc/6.0/mailer.html#creating-sending-messages) for all possible interactions with the `Symfony\Component\Mime\Email` object.
-
-> {note} `Symfony\Component\Mime\Email`에서 사용가능한 작업들은 [Symfony 메일러 매뉴얼](https://symfony.com/doc/6.0/mailer.html#creating-sending-messages)을 참고하십시오.
-
-The list below contains a more thorough overview of renamed methods. Many of these methods are low-level methods used to interact with SwiftMailer / Symfony Mailer directly, so may not be commonly used within most Laravel applications:
-
-다음의 목록에서 이름이 변경된 메소드를 확인할 수 있습니다. 이 메소드 중 다수는 SwiftMailer / Symfony Mailer와 직접 인터렉션하는 메소드입니다. 대부분은 저수준의 메소드이므로 라라벨 애플리케이션에서는 일반적으로 사용되지 않을 수 있습니다.
-
- Message::getSwiftMessage();
- Message::getSymfonyMessage();
-
- Mailable::withSwiftMessage($callback);
- Mailable::withSymfonyMessage($callback);
-
- MailMessage::withSwiftMessage($callback);
- MailMessage::withSymfonyMessage($callback);
-
- Mailer::getSwiftMailer();
- Mailer::getSymfonyTransport();
-
- Mailer::setSwiftMailer($swift);
- Mailer::setSymfonyTransport(TransportInterface $transport);
-
- MailManager::createTransport($config);
- MailManager::createSymfonyTransport($config);
-
-#### Proxied `Illuminate\Mail\Message` Methods
-#### 프록시 처리된 `Illuminate\Mail\Message` 메소드
-
-The `Illuminate\Mail\Message` typically proxied missing methods to the underlying `Swift_Message` instance. However, missing methods are now proxied to an instance of `Symfony\Component\Mime\Email` instead. So, any code that was previously relying on missing methods to be proxied to SwiftMailer should be updated to their corresponding Symfony Mailer counterparts.
-
-`Illuminate\Mail\Message`는 일반적으로 기본 `Swift_Message` 인스턴에 누락된 메소드를 프록시처리해서 제공했습니다. 하지만 누락된 메소드는 새로운 `Symfony\Component\Mime\Email` 인스턴스에 연결됩니다. 따라서 이전에 누락된 메소드를 사용하여 SwiftMailer로 처리하던 코드는 Symfony Mailer를 사용하도록 업데이트 해야합니다.
-
-Again, many applications may not be interacting with these methods, as they are not documented within the Laravel documentation:
-
-다시말하지만, 라라벨 매뉴얼에 별도로 기재되어 있지 않기 때문에 애플리케이션에서 기존에 이런 메소드를 사용하지 않았을 수도 있습니다.
-
- // Laravel 8.x...
- $message
- ->setFrom('taylor@laravel.com')
- ->setTo('example@example.org')
- ->setSubject('Order Shipped')
- ->setBody('HTML
', 'text/html')
- ->addPart('Plain Text', 'text/plain');
-
- // Laravel 9.x...
- $message
- ->from('taylor@laravel.com')
- ->to('example@example.org')
- ->subject('Order Shipped')
- ->html('HTML
')
- ->text('Plain Text');
-
-#### Generated Messages IDs
-#### 생성된 메세지 ID
-
-SwiftMailer offered the ability to define a custom domain to include in generated Message IDs via the `mime.idgenerator.idright` configuration option. This is not supported by Symfony Mailer. Instead, Symfony Mailer will automatically generate a Message ID based on the sender.
-
-SwiftMailer는 `mime.idgenerator.idright` 설정 옵션값을 사용하여 생성된 메시지 ID에 포함할 커스텀 도메인을 정의하는 기능을 제공했습니다. 이 기능은 Symfony Mailer에서는 지원되지 않습니다. 대신 Symfony Mailer는 발신자를 기반으로 메시지 ID를 자동으로 생성합니다.
-
-#### `MessageSent` Event Changes
-#### `MessageSent` 이벤트 변화
-
-The `message` property of the `Illuminate\Mail\Events\MessageSent` event now contains an instance of `Symfony\Component\Mime\Email` instead of an instance of `Swift_Message`. This message represents the email **before** it is sent.
-
-`Illuminate\Mail\Events\MessageSent` 이벤트의 `message` 프로퍼티는 이제 `Swift_Message` 인스턴스 대신 `Symfony\Component\Mime\Email` 인스턴스를 갖습니다. 이 메시지는 발송되기 **전** 이메일을 나타냅니다.
-
-Additionally, a new `sent` property has been added to the `MessageSent` event. This property contains an instance of `Illuminate\Mail\SentMessage` and contains information about the sent email, such as the message ID.
-
-추가적으로 `MessageSent` 이벤트에 `sent` 프로퍼티가 새로 추가되었습니다. 이 프로퍼티는 `Illuminate\Mail\SentMessage` 인스턴스를 포함하고 메시지 ID와 같은 전송된 이메일에 관한 정보를 담고 있습니다.
-
-#### Forced Reconnections
-#### 강제 재연결
-
-It is no longer possible to force a transport reconnection (for example when the mailer is running via a daemon process). Instead, Symfony Mailer will attempt to reconnect to the transport automatically and throw an exception if the reconnection fails.
-
-더 이상 강제로 전송 재연결을 수행할 수 없습니다(예: 메일러가 데몬 프로세스를 통해 실행 중인 경우). 대신 Symfony Mailer는 전송 과정에서 자동으로 재연결을 시도하고 재연결이 실패하면 예외를 발생시킵니다.
-
-#### SMTP Stream Options
-#### SMTP 스트림 옵션
-
-Defining stream options for the SMTP transport is no longer supported. Instead, you must define the relevant options directly within the configuration if they are supported. For example, to disable TLS peer verification:
-
-SMTP 전송에 대한 스트림 옵션을 정의하는 것은 더 이상 지원되지 않습니다. 대신에 연관된 옵션을 설정 파일안에서 직접 정의해야합니다. 예를 들어 TLS 피어 확인을 비활성화하려면 다음과 같이 설정하면 됩니다.
-
- 'smtp' => [
- // Laravel 8.x...
- 'stream' => [
- 'ssl' => [
- 'verify_peer' => false,
- ],
- ],
-
- // Laravel 9.x...
- 'verify_peer' => false,
- ],
+
-To learn more about the available configuration options, please review the [Symfony Mailer documentation](https://symfony.com/doc/6.0/mailer.html#transport-setup).
+#### `Redirect::home` 메소드
-사용할 수 있는 설정 옵션에 대해서는 [Symfony Mailer 매뉴얼](https://symfony.com/doc/6.0/mailer.html#transport-setup)을 참고하십시오.
-
-> {note} In spite of the example above, you are not generally advised to disable SSL verification since it introduces the possibility of "man-in-the-middle" attacks.
-
-> {note} 위의 예시와 같이 SSL 확인을 비활성화하는 것은 "중간자" 공격의 가능성이 있으므로 일반적으로 사용하지 않는 것이 좋습니다.
-
-#### SMTP `auth_mode`
-#### SMTP `auth_mode`
-
-Defining the SMTP `auth_mode` in the `mail` configuration file is no longer required. The authentication mode will be automatically negotiated between Symfony Mailer and the SMTP server.
-
-`mail` 설정파일안에서 SMTP `auth_mode`를 정의할 필요가 없습니다. 인증 모드는 Symfony Mailer와 SMTP 서버 간에 자동으로 수행됩니다.
-
-#### Failed Recipients
-#### 전송에 실패한 수신자
-
-It is no longer possible to retrieve a list of failed recipients after sending a message. Instead, a `Symfony\Component\Mailer\Exception\TransportExceptionInterface` exception will be thrown if a message fails to send. Instead of relying on retrieving invalid email addresses after sending a message, we recommend that you validate email addresses before sending the message instead.
-
-메세지를 발송한 뒤에 전송에 실패한 수신자 목록을 조회할 수 없습니다. 대신 메세지 발송이 실패하면 `Symfony\Component\Mailer\Exception\TransportExceptionInterface` 예외가 발생합니다. 메시지를 보낸 후 실패한 수신자 이메일 주소를 조회하는 대신 메시지를 보내기 전에 이메일 주소를 확인하는 것이 좋습니다.
-
-### Packages
-### 패키지
-
-
-#### The `lang` Directory
-#### `lang` 디렉토리
-
-**Likelihood Of Impact: Medium**
-**영향 가능성: 중간**
-
-In new Laravel applications, the `resources/lang` directory is now located in the root project directory (`lang`). If your package is publishing language files to this directory, you should ensure that your package is publishing to `app()->langPath()` instead of a hard-coded path.
-
-새로운 라라벨 애플리케이션에서 `resources/lang` 디렉토리는 이제 프로젝트의 루트 디렉토리(`lang`)로 옮겨졌습니다. 패키지가 이 디렉토리에 언어 파일을 작성하는 경우 패키지가 하드 코딩된 경로 대신 `app()->langPath()`를 통해서 파일을 작성하는지 확인해야 합니다.
-
-
-### Queue
-### Queue-큐
-
-
-#### The `opis/closure` Library
-#### `opis/closure` 라이브러리
-
-**Likelihood Of Impact: Low**
-**영향 가능성: 낮음**
-
-Laravel's dependency on `opis/closure` has been replaced by `laravel/serializable-closure`. This should not cause any breaking change in your application unless you are interacting with the `opis/closure` library directly. In addition, the previously deprecated `Illuminate\Queue\SerializableClosureFactory` and `Illuminate\Queue\SerializableClosure` classes have been removed. If you are interacting with `opis/closure` library directly or using any of the removed classes, you may use [Laravel Serializable Closure](https://github.com/laravel/serializable-closure) instead.
-
-라라벨의 `opis/closure` 의존성은 `laravel/serializable-closure`으로 대체되었습니다. `opis/closure` 라이브러리를 직접사용한 경우가 아니라면 애플리케이션에는 별다른 영향이 없을 것입니다. 추가적으로 이전에 지원중단된 `Illuminate\Queue\SerializableClosureFactory` 및 `Illuminate\Queue\SerializableClosure` 클래스가 제거되었습니다. `opis/closure` 라이브러리를 직접 사용하거나 제거된 클래스를 사용하였다면 [Laravel Serializable Closure](https://github.com/laravel/serializable-closure)를 대신 사용할 수 있습니다.
-
-#### The Failed Job Provider `flush` Method
-#### 실패한 작업 제공자의 `flush` 메소드
-
-**Likelihood Of Impact: Low**
-**영향 가능성: 낮음**
-
-The `flush` method defined by the `Illuminate\Queue\Failed\FailedJobProviderInterface` interface now accepts an `$hours` argument which determines how old a failed job must be (in hours) before it is flushed by the `queue:flush` command. If you are manually implementing the `FailedJobProviderInterface` you should ensure that your implementation is updated to reflect this new argument:
+**Likelihood Of Impact: Very Low**
+**영향도 : 매우 낮음**
-`Illuminate\Queue\Failed\FailedJobProviderInterface` 인터페이스의 `flush` 메소드는 이제 실패한 작업이 `queue:flush`에 의해서 삭제되기 전에 얼마나 오래 유지되어야 하는지(시간) `$hours` 인자로 결정합니다. 만약 수동으로 `FailedJobProviderInterface` 인터페이스를 구현하였다면 변경된 인자를 전달받도록 업데이트 해야합니다.
+`Redirect::home`은 삭제되었습니다. 대신 명시적으로 명명된 경로로 리다이렉트 될 것입니다.
```php
-public function flush($hours = null);
+return Redirect::route('home');
```
-### Session
-### 세션
-
-#### The `getSession` Method
-#### `getSession` 메소드
-
-**Likelihood Of Impact: Low**
-**영향 가능성: 낮음**
-
-The `Symfony\Component\HttpFoundaton\Request` class that is extended by Laravel's own `Illuminate\Http\Request` class offers a `getSession` method to get the current session storage handler. This method is not documented by Laravel as most Laravel applications interact with the session through Laravel's own `session` method.
-
-라라벨은 `Symfony\Component\HttpFoundaton\Request` 클래스를 확장한 `Illuminate\Http\Request`을 사용합니다. 이 클래스는 현재 세션 스토리지 핸들러를 가져오기 위한 `getSession` 메소드를 제공합니다. 대부분의 라라벨 애플리케이션은 `session` 메소드를 통해 세션과 상호 작용하기 때문에 이 메소드는 별도로 문서에 기록되지 않았습니다.
-
-The `getSession` method previously returned an instance of `Illuminate\Session\Store` or `null`; however, due to the Symfony 6.x release enforcing a return type of `Symfony\Component\HttpFoundation\Session\SessionInterface`, the `getSession` now correctly returns a `SessionInterface` implementation or throws an `\Symfony\Component\HttpFoundation\Exception\SessionNotFoundException` exception when no session is available.
-
-`getSession` 메소드는 이전까지 `Illuminate\Session\Store` 인스턴스 또는 `null`을 반환했습니다. 하지만 Symfony 6.x 릴리즈 부터 `Symfony\Component\HttpFoundation\Session\SessionInterface` 인스턴스를 반환하기 때문에 `getSession` 메소드도 일치하는 `SessionInterface` 구현체를 반환하거나 세션을 사용할 수 없는 경우 `\Symfony\Component\HttpFoundation\Exception\SessionNotFoundException` 예외를 발생시킵니다.
-
### Testing
-### 테스팅
-
-
-#### The `assertDeleted` Method
-#### `assertDeleted` 메소드
-
-**Likelihood Of Impact: Medium**
-**영향 가능성: 중간**
-
-All calls to the `assertDeleted` method should be updated to `assertModelMissing`.
-
-`assertDeleted` 메소드를 `assertModelMissing` 으로 변경하십시오.
-
-### Trusted Proxies
-### 신뢰할 수 있는 프록시
-
-**Likelihood Of Impact: Low**
-**영향 가능성: 낮음**
-
-If you are upgrading your Laravel 8 project to Laravel 9 by importing your existing application code into a totally new Laravel 9 application skeleton, you may need to update your application's "trusted proxy" middleware.
-
-기존의 라라벨 8 애플리케이션 코드를 완전히 새로운 라라벨 9 애플리케이션 스켈레톤으로 가져와 업그레이드하는 경우라면, 애플리케이션의 "신뢰할 수 있는 프록시" 미들웨어 설정을 변경해야합니다.
-
-Within your `app/Http/Middleware/TrustProxies.php` file, update `use Fideloper\Proxy\TrustProxies as Middleware` to `use Illuminate\Http\Middleware\TrustProxies as Middleware`.
-`app/Http/Middleware/TrustProxies.php` 파일 안에서, `use Fideloper\Proxy\TrustProxies as Middleware` 코드를 `use Illuminate\Http\Middleware\TrustProxies as Middleware` 으로 변경하십시오.
+
-Next, within `app/Http/Middleware/TrustProxies.php`, you should update the `$headers` property definition:
+#### 서비스 모킹
-다음으로 `app/Http/Middleware/TrustProxies.php` 파일 안에서, `$headers` 속성의 정의를 다음과 같이 변경해야합니다.
+**영향도 : 중간**
-```php
-// Before...
-protected $headers = Request::HEADER_X_FORWARDED_ALL;
-
-// After...
-protected $headers =
- Request::HEADER_X_FORWARDED_FOR |
- Request::HEADER_X_FORWARDED_HOST |
- Request::HEADER_X_FORWARDED_PORT |
- Request::HEADER_X_FORWARDED_PROTO |
- Request::HEADER_X_FORWARDED_AWS_ELB;
-```
-
-Finally, you can remove the `fideloper/proxy` Composer dependency from your application:
+`MocksApplicationServices` 트레이트가 삭제되었습니다. 해당 트레이트는 `expectsEvents`, `expectsJobs`, `expectsNotifications` 등의 메소드를 제공했습니다.
-마지막으로 `fideloper/proxy` 컴포저 의존성을 제거하십시오.
-
-```shell
-composer remove fideloper/proxy
-```
+위와 같은 메소드를 사용하고자 한다면, `Event::fake`, `Bus::fake`, `Notification::fake`로 전환할 것을 권장합니다. 각 컴포넌트 문서를 통해 임의값을 만들어 대체하는 법에 대해서 배울 수 있습니다.
### Validation
-### 유효성 검사
-#### Form Request `validated` Method
-#### Form Request 객체의 `validated` 메소드
+
-**Likelihood Of Impact: Low**
-**영향 가능성: 낮음**
+#### 클로저 유효성 검사 메시지
-The `validated` method offered by form requests now accepts `$key` and `$default` arguments. If you are manually overwriting the definition of this method, you should update your method's signature to reflect these new arguments:
+**영향도 : 매우 낮음**
-form request 객체의 `validated` 메소드는 이제 `$key` 와 `$default` 인자를 전달받습니다. 이 메소드를 수동으로 오버라이딩해서 사용중이라면, 다음의 시그니처를 반영하도록 업데이트해야합니다.
+클로저 기반의 유효성 검사 규칙을 만드는 경우, `$fail` 콜백 함수를 한 번 이상 호출하게 된다면 이전 메시지를 덮어쓰는 대신 배열에 메시지가 추가됩니다. 일반적으로 당신의 애플리케이션에 영향을 주지는 않습니다.
+
+이에 더해, `$fail` 콜백 함수는 객체를 반환합니다. 유효성 검사 클로저에 반환값 타입을 기재하였다면, 타입 힌트를 업데이트 해야합니다.
```php
-public function validated($key = null, $default = null)
+public function rules()
+{
+ 'name' => [
+ function ($attribute, $value, $fail) {
+ $fail('validation.translation.key')->translate();
+ },
+ ],
+}
```
-
-#### The `password` Rule
-#### `password` 규칙
-
-**Likelihood Of Impact: Medium**
-**영향 가능성: 중간**
-
-The `password` rule, which validates that the given input value matches the authenticated user's current password, has been renamed to `current_password`.
-
-주어진 입력값이 사용자의 현재 비밀번호와 일치하는지 확인할 수 있는 `password` 규칙이 `current_password`으로 이름이 변경되었습니다.
-
-
-#### Unvalidated Array Keys
-#### 검증되지 않은 배열 키
-
-**Likelihood Of Impact: Medium**
-**영향 가능성: 중간**
+
-In previous releases of Laravel, you were required to manually instruct Laravel's validator to exclude unvalidated array keys from the "validated" data it returns, especially in combination with an `array` rule that does not specify a list of allowed keys.
+### Form 요청 After 메소드
-이전 버전의 라라벨에서는 입력된 필드의 값이 배열인지 확인하는 `array` 유효성 검사 규칙을 지정할 때 유효성 검사가 필요하지 않은 "검증되지 않는 배열키"를 제외하려면 직접 라라벨의 Validator 를 조작해야만 했습니다.
+**영향도 : 매우 낮음**
-However, in Laravel 9.x, unvalidated array keys are always excluded from the "validated" data even when no allowed keys have been specified via the `array` rule. Typically, this behavior is the most expected behavior and the previous `excludeUnvalidatedArrayKeys` method was only added to Laravel 8.x as a temporary measure in order to preserve backwards compatibility.
-
-라라벨 9.x 에서는 `array` 유효성 검사 규칙을 확인할 때 반드시 필요한 키가 지정되지 않은 경우에도 항상 "요휴성 검사를 확인하는" 데이터에서 제외됩니다. 일반적으로 이 동작은 이전버전과의 호환성을 위해서 라라벨 8.x 에서 임시로 추가된 `excludeUnvalidatedArrayKeys` 메서드와 관련있습니다.
-
-Although it is not recommended, you may opt-in to the previous Laravel 8.x behavior by invoking a new `includeUnvalidatedArrayKeys` method within the `boot` method of one of your application's service providers:
-
-권장하지는 않지만, 애플리케이션 서비스 프로바이더의 `boot` 메소드에서 `includeUnvalidatedArrayKeys` 메소드를 호출하여 이전버전인 라라벨 8.x 와 동일한 동작을 하도록 설정할 수 있습니다.
-
-```php
-use Illuminate\Support\Facades\Validator;
-
-/**
- * Register any application services.
- *
- * @return void
- */
-public function boot()
-{
- Validator::includeUnvalidatedArrayKeys();
-}
-```
+form 요청 내 `after` 메소드는 이제 [라라벨이 사전 정의](https://github.com/laravel/framework/pull/46757)합니다. form 요청이 `after` 메소드를 정의하고 있다면, 해당 메소드는 이름을 바꾸거나 라라벨의 새로운 "유효성 검사 다음" 기능을 활용하기 위해 수정되어야 합니다.
-### Miscellaneous
-### 기타사항
-We also encourage you to view the changes in the `laravel/laravel` [GitHub repository](https://github.com/laravel/laravel). While many of these changes are not required, you may wish to keep these files in sync with your application. Some of these changes will be covered in this upgrade guide, but others, such as changes to configuration files or comments, will not be. You can easily view the changes with the [GitHub comparison tool](https://github.com/laravel/laravel/compare/8.x...9.x) and choose which updates are important to you.
+### 기타
-우리는 또한 `laravel/laravel` [GitHub 저장소](https://github.com/laravel/laravel)에서 변경사항들을 확인해보시길 권합니다. 변경사항들 중 많은 부분들은 필수는 아니지만, 업데이트 된 파일들을 여러분의 어플리케이션에 동기화 해두는게 좋습니다. 변경사항들 중 일부는 이 업그레이드 가이드에서 설명되었지만 설정 파일이나 코멘트같은 다른 변경사항들은 그렇지 않았습니다. [GitHub comparison tool](https://github.com/laravel/laravel/compare/8.x...9.x)을 이용해 변경사항들을 쉽게 살펴보고 어떤 변경사항이 여러분에게 중요한지 살펴보세요.
+`laravel/laravel` [GitHub repository](https://github.com/laravel/laravel) 변경 사항을 보시는 것을 권장합니다. 모든 변경 사항이 필요한 것은 아니지만, 일부 파일은 당신의 애플리케이션과 동기화되어야 할 수 있습니다. 어떤 변경 사항은 이 가이드에 의해 다뤄지지만 설정 파일, 주석 등은 그렇지 않을 수 있습니다.
+[GitHub comparison tool](https://github.com/laravel/laravel/compare/9.x...10.x)를 통해 변경 사항과 어떤 업데이트가 중요한지 볼 수 있습니다. 그러나 Github 비교 도구에 의해 보여지는 변경 내용은 우리 조직의 PHP 고유 타입 적용에 의한 것입니다. 라라벨 10 마이그레이션 중 발생하는 이러한 변경은 되돌릴 수 있으며 선택 사항입니다.
diff --git a/pint.md b/pint.md
index 7111f7f0d..1b250de0a 100644
--- a/pint.md
+++ b/pint.md
@@ -1,39 +1,42 @@
# Laravel Pint
-- [Introduction](#introduction)
-- [Installation](#installation)
-- [Running Pint](#running-pint)
-- [Configuring Pint](#configuring-pint)
- - [Presets](#presets)
- - [Rules](#rules)
- - [Excluding Files / Folders](#excluding-files-or-folders)
+- [소개](#introduction)
+- [설치](#installation)
+- [실행](#running-pint)
+- [설정](#configuring-pint)
+ - [프리셋](#presets)
+ - [규칙](#rules)
+ - [파일/폴더 제외](#excluding-files-or-folders)
-## Introduction
-[Laravel Pint](https://github.com/laravel/pint) is an opinionated PHP code style fixer for minimalists. Pint is built on top of PHP-CS-Fixer and makes it simple to ensure that your code style stays clean and consistent.
+## 소개
-Pint is automatically installed with all new Laravel applications so you may start using it immediately. By default, Pint does not require any configuration and will fix code style issues in your code by following the opinionated coding style of Laravel.
+[라라벨 파인트](https://github.com/laravel/pint) 는 미니멀리스트를 위한 PHP만의 고유한 코드 수정 도구입니다. 파인트는 PHP-CS-FIXER 기반으로 구축되었으며 코드 스타일을 간결하고 일관되게 유지하는 것을 더욱 간편하게 해줍니다.
+
+파인트는 새로운 라라벨 애플리케이션을 설치하면 자동으로 설치되며, 곧바로 사용할 수 있습니다. 기본적으로 파인트는 어떤 설정도 요구하지 않으며, 라라벨의 고유한 코드 스타일을 따라 당신의 코드를 수정해줄 것입니다.
-## Installation
-Pint is included in recent releases of the Laravel framework, so installation is typically unnecessary. However, for older applications, you may install Laravel Pint via Composer:
+## 설치
+
+파인트는 최신 라라벨 프레임워크에 포함되어 있으며, 일반적으로 설치는 불필요합니다. 그러나 이전 버전의 애플리케이션이라면 Composer를 이용하여 설치하여야 합니다.
```shell
composer require laravel/pint --dev
```
-## Running Pint
-You can instruct Pint to fix code style issues by invoking the `pint` binary that is available in your project's `vendor/bin` directory:
+## 실행
+
+당신은 당신의 프로젝트 내 `vendor/bin` 디렉토리에 있는 `pint` 바이너리를 실행하여 파인트로 하여금 코드를 수정할 수 있도록 명령할 수 있습니다.
```shell
./vendor/bin/pint
```
-You may also run Pint on specific files or directories:
+또한 당신은 특정 파일이나 디렉토리에 파인트를 실행할 수 있습니다.
```shell
./vendor/bin/pint app/Models
@@ -41,112 +44,110 @@ You may also run Pint on specific files or directories:
./vendor/bin/pint app/Models/User.php
```
-Pint will display a thorough list of all of the files that it updates. You can view even more detail about Pint's changes by providing the `-v` option when invoking Pint:
+파인트는 업데이트하고자하는 모든 파일들의 리스트를 보여줄 것입니다. 파인트가 수정하고자 하는 더 자세한 내용을 보고자 한다면 `-v` 옵션을 추가하여 실행해주세요.
```shell
./vendor/bin/pint -v
```
-If you would like Pint to simply inspect your code for style errors without actually changing the files, you may use the `--test` option:
+파인트가 파일 수정 없이 간단하게 코드 스타일 오류를 검사하기를 원한다면, `--test` 옵션을 사용할 수 있습니다.
```shell
./vendor/bin/pint --test
```
-If you would like Pint to only modify the files that have uncommitted changes according to Git, you may use the `--dirty` option:
+Git 상에서 커밋되지 않은 내용만들 수정하고자 한다면, `--dirty` 옵션을 사용하세요
```shell
./vendor/bin/pint --dirty
```
-## Configuring Pint
-As previously mentioned, Pint does not require any configuration. However, if you wish to customize the presets, rules, or inspected folders, you may do so by creating a `pint.json` file in your project's root directory:
+## 설정
+
+앞서 이야기한 것처럼 파인트는 어떤 설정도 필요로 하지 않습니다. 그러나 프리셋, 규칙, 검사 폴더 등을 수정하고자 한다면, `pint.json` 파일을 루트 디렉토리에 생성하여야 합니다.
```json
{
- "preset": "laravel"
+ "preset": "laravel"
}
```
-In addition, if you wish to use a `pint.json` from a specific directory, you may provide the `--config` option when invoking Pint:
+추가로, `pint.json` 파일을 특정 디렉토리에서 이용하고자 한다면, 파인트를 실행할 때 `--config` 옵션을 제공할 수 있습니다.
```shell
pint --config vendor/my-company/coding-style/pint.json
```
-### Presets
-Presets defines a set of rules that can be used to fix code style issues in your code. By default, Pint uses the `laravel` preset, which fixes issues by following the opinionated coding style of Laravel. However, you may specify a different preset by providing the `--preset` option to Pint:
+### 프리셋
+
+프리셋은 당신 코드에 있는 스타일 이슈를 수정하는 몇 가지 규칙을 정의합니다. 기본적으로 파인트는 `laravel` 프리셋을 사용하며, 이는 라라벨 특유의 코드 스타일을 준수합니다. 그러나, 당신이 다른 프리셋을 사용하고자 한다면 파인트 사용 시 `--preset` 옵션을 추가해야 합니다.
```shell
pint --preset psr12
```
-If you wish, you may also set the preset in your project's `pint.json` file:
+원한다면 `pint.json` 파일에 프리셋을 추가할 수도 있습니다.
```json
{
- "preset": "psr12"
+ "preset": "psr12"
}
```
-Pint's currently supported presets are: `laravel`, `psr12`, and `symfony`.
+파인트는 현재 `laravel`, `psr12`, `symfony` 프리셋을 지원합니다.
-### Rules
-Rules are style guidelines that Pint will use to fix code style issues in your code. As mentioned above, presets are predefined groups of rules that should be perfect for most PHP projects, so you typically will not need to worry about the individual rules they contain.
+### 규칙
+
+규칙이란 파인트가 코드를 수정할 때 사용할 스타일 가이드라인입니다. 앞에서 이야기한 것처럼, 프리셋은 많은 PHP 프로젝트에서 사용되기에 최적인 몇 가지 사전 정의된 규칙들이며, 당신은 일반적으로 개별적인 규칙에 대해 걱정할 필요가 없습니다.
-However, if you wish, you may enable or disable specific rules in your `pint.json` file:
+그러나 원한다면, `pint.json` 파일내에서 특정한 규칙을 적용하거나 적용하지 않도록 조정할 수 있습니다..
```json
{
- "preset": "laravel",
- "rules": {
- "simplified_null_return": true,
- "braces": false,
- "new_with_braces": {
- "anonymous_class": false,
- "named_class": false
- }
- }
+ "preset": "laravel",
+ "rules": {
+ "simplified_null_return": true,
+ "braces": false,
+ "new_with_braces": {
+ "anonymous_class": false,
+ "named_class": false
+ }
+ }
}
```
-Pint is built on top of [PHP-CS-Fixer](https://github.com/FriendsOfPHP/PHP-CS-Fixer). Therefore, you may use any of its rules to fix code style issues in your project: [PHP-CS-Fixer Configurator](https://mlocati.github.io/php-cs-fixer-configurator).
+파인트는 [PHP-CS-Fixer](https://github.com/FriendsOfPHP/PHP-CS-Fixer)를 기반으로 합니다. 그러므로 PHP-CS-Fixer의 규칙을 준수해야 합니다[PHP-CS-Fixer Configurator](https://mlocati.github.io/php-cs-fixer-configurator).
-### Excluding Files / Folders
-By default, Pint will inspect all `.php` files in your project except those in the `vendor` directory. If you wish to exclude more folders, you may do so using the `exclude` configuration option:
+### 파일/폴더 제외
+
+기본적으로 파인트는 프로젝트 내에 `vendor` 디렉토리를 제외한 모든 `.php` 파일을 검사합니다. 만약 폴더를 제외하고 싶다면, `exclude` 옵션을 이용하세요.
```json
{
- "exclude": [
- "my-specific/folder"
- ]
+ "exclude": ["my-specific/folder"]
}
```
-If you wish to exclude all files that contain a given name pattern, you may do so using the `notName` configuration option:
+특정 네이밍 패턴을 가진 모든 파일을 제외하고자 한다면, `notName` 옵션을 이용하세요.
```json
{
- "notName": [
- "*-my-file.php"
- ]
+ "notName": ["*-my-file.php"]
}
```
-If you would like to exclude a file by providing an exact path to the file, you may do so using the `notPath` configuration option:
+특정 경로의 파일을 제외하고자 한다면, `notPath` 옵션을 이용하세요
```json
{
- "notPath": [
- "path/to/excluded-file.php"
- ]
+ "notPath": ["path/to/excluded-file.php"]
}
```
diff --git a/upgrade.md b/upgrade.md
index 6db4bfc83..831c68c45 100644
--- a/upgrade.md
+++ b/upgrade.md
@@ -1,74 +1,80 @@
-# Upgrade Guide
+# 업그레이드 가이드
-- [Upgrading To 10.0 From 9.x](#upgrade-10.0)
+- [9.x 버전에서 10.0으로 업그레이드](#upgrade-10.0)
+
## High Impact Changes
-- [Updating Dependencies](#updating-dependencies)
-- [Updating Minimum Stability](#updating-minimum-stability)
+- [의존성 업데이트](#updating-dependencies)
+- [Minimum Stability 업데이트](#updating-minimum-stability)
+
## Medium Impact Changes
-- [Database Expressions](#database-expressions)
-- [Model "Dates" Property](#model-dates-property)
+- [데이터베이스 구문](#database-expressions)
+- ["Dates" 모델 프로퍼티](#model-dates-property)
- [Monolog 3](#monolog-3)
-- [Redis Cache Tags](#redis-cache-tags)
-- [Service Mocking](#service-mocking)
-- [The Language Directory](#language-directory)
+- [Redis 캐시 태그](#redis-cache-tags)
+- [서비스 모킹](#service-mocking)
+- [언어](#language-directory)
+
## Low Impact Changes
-- [Closure Validation Rule Messages](#closure-validation-rule-messages)
-- [Form Request `after` Method](#form-request-after-method)
-- [Public Path Binding](#public-path-binding)
-- [Query Exception Constructor](#query-exception-constructor)
-- [Rate Limiter Return Values](#rate-limiter-return-values)
-- [Relation `getBaseQuery` Method](#relation-getbasequery-method)
-- [The `Redirect::home` Method](#redirect-home)
-- [The `Bus::dispatchNow` Method](#dispatch-now)
-- [The `registerPolicies` Method](#register-policies)
-- [ULID Columns](#ulid-columns)
+- [클로저 검증 규칙 메시지](#closure-validation-rule-messages)
+- [Form 요청 `after` 메소드](#form-request-after-method)
+- [Public 경로 바인딩](#public-path-binding)
+- [쿼리 예외 생성자](#query-exception-constructor)
+- [Rate Limiter 반환 값](#rate-limiter-return-values)
+- [Relation `getBaseQuery` 메소드](#relation-getbasequery-method)
+- [`Redirect::home` 메소드](#redirect-home)
+- [`Bus::dispatchNow` 메소드](#dispatch-now)
+- [`registerPolicies` 메소드](#register-policies)
+- [ULID 컬럼](#ulid-columns)
+
## Upgrading To 10.0 From 9.x
-#### Estimated Upgrade Time: 10 Minutes
-> **Note**
-> We attempt to document every possible breaking change. Since some of these breaking changes are in obscure parts of the framework only a portion of these changes may actually affect your application. Want to save time? You can use [Laravel Shift](https://laravelshift.com/) to help automate your application upgrades.
+#### 예상 소요 시간 : 10분
+
+> **Note**
+> 모든 주요 변경 사항을 문서화하고자 했습니다. 몇몇 변경 사항은 프레임워크의 모호한 부분에 있기 때문에 일정 부분 당신의 애플리케이션에 실질적인 영향을 줄 수 있습니다. 시간을 절약하고 싶으신가요? 업그레이드 자동화를 위해 [Laravel Shift](https://laravelshift.com/)를 이용할 수 있습니다.
-### Updating Dependencies
-**Likelihood Of Impact: High**
+### 의존성 업데이트
+
+**영향도 : 높음**
-#### PHP 8.1.0 Required
+#### PHP 8.1.0 필요
-Laravel now requires PHP 8.1.0 or greater.
+Laravel은 이제 PHP 8.1 이상을 요구합니다.
-#### Composer 2.2.0 Required
+#### Composer 2.2.0 필요
-Laravel now requires [Composer](https://getcomposer.org) 2.2.0 or greater.
+라라벨은 [Composer](https://getcomposer.org) 2.2.0 버전 이상을 요구합니다.
-#### Composer Dependencies
+#### Composer 의존성
-You should update the following dependencies in your application's `composer.json` file:
+`composer.json` 파일에 기재된 애플리케이션의 의존성을 업데이트 해야 합니다.
@@ -76,13 +82,13 @@ You should update the following dependencies in your application's `composer.jso
- `laravel/sanctum` to `^3.2`
- `doctrine/dbal` to `^3.0`
- `spatie/laravel-ignition` to `^2.0`
-- `laravel/passport` to `^11.0` ([Upgrade Guide](https://github.com/laravel/passport/blob/11.x/UPGRADE.md))
+- `laravel/passport` to `^11.0` ([가이드](https://github.com/laravel/passport/blob/11.x/UPGRADE.md))
-If you are upgrading to Sanctum 3.x from the 2.x release series, please consult the [Sanctum upgrade guide](https://github.com/laravel/sanctum/blob/3.x/UPGRADE.md).
+Sanctum 2.x 버전에서 3.x 버전으로 업데이트 하자고 한다면, [Sanctum upgrade guide](https://github.com/laravel/sanctum/blob/3.x/UPGRADE.md)를 참고하세요.
-Furthermore, if you wish to use [PHPUnit 10](https://phpunit.de/announcements/phpunit-10.html), you should delete the `processUncoveredFiles` attribute from the `` section of your application's `phpunit.xml` configuration file. Then, update the following dependencies in your application's `composer.json` file:
+나아가 [PHPUnit 10](https://phpunit.de/announcements/phpunit-10.html)를 사용하고자 한다면, `phpunit.xml` 설정 파일에 있는 `` 섹션에서 `processUncoveredFiles` 속성을 삭제하세요. 그런 다음 `composer.json` 파일 내 아래 의존성을 업데이트 하세요.
@@ -91,12 +97,13 @@ Furthermore, if you wish to use [PHPUnit 10](https://phpunit.de/announcements/ph
-Finally, examine any other third-party packages consumed by your application and verify you are using the proper version for Laravel 10 support.
+마지막으로 서드파티 패키지를 검사하고 해당 패키지들이 Laravel 10을 지원하는지 확인하세요
+
#### Minimum Stability
-You should update the `minimum-stability` setting in your application's `composer.json` file to `stable`. Or, since the default value of `minimum-stability` is `stable`, you may delete this setting from your application's `composer.json` file:
+`composer.json` 파일 내에 `minimum-stability` 속성을 `stable`로 바꿔주어야 합니다. `minimum-stability`의 기본값이 `stable`이므로 해당 설정을 삭제하셔도 됩니다.
```json
"minimum-stability": "stable",
@@ -105,48 +112,57 @@ You should update the `minimum-stability` setting in your application's `compose
### Application
-#### Public Path Binding
+
+#### Public 경로 바인딩
**Likelihood Of Impact: Low**
+**영향도 : 낮음**
If your application is customizing its "public path" by binding `path.public` into the container, you should instead update your code to invoke the `usePublicPath` method offered by the `Illuminate\Foundation\Application` object:
+애플리케이션에 `path.public`를 바인딩하여 "public 경로"를 수정하고 싶다면, `Illuminate\Foundation\Application`가 제공하는 `usePublicPath` 메서드를 호출하여야 합니다.
```php
app()->usePublicPath(__DIR__.'/public');
```
-### Authorization
+### 인증
-### The `registerPolicies` Method
+
+### `registerPolicies` 메소드
**Likelihood Of Impact: Low**
+**영향도 : 낮음**
-The `registerPolicies` method of the `AuthServiceProvider` is now invoked automatically by the framework. Therefore, you may remove the call to this method from the `boot` method of your application's `AuthServiceProvider`.
+`AuthServiceProvider` 내 `registarPolicies` 메소드는 프레임워크에 의해 자동으로 호출됩니다. 그러므로 `AuthServiceProvider`의 `boot` 메서드에서 해당 메서드 호출은 삭제해주세요.
-### Cache
+### 캐시
-#### Redis Cache Tags
+
+#### Redis 캐시 태그
**Likelihood Of Impact: Medium**
+**영향도 : 중간**
-Redis [cache tag](/docs/{{version}}/cache#cache-tags) support has been rewritten for better performance and storage efficiency. In previous releases of Laravel, stale cache tags would accumulate in the cache when using Redis as your application's cache driver.
+Redis [cache tag](/docs/{{version}}/cache#cache-tags) 지원이 더 나은 성능과 저장 효율을 위해 다시 짜여졌습니다. 이전 라라벨 버전에서는, Redis를 캐시 드라이버로 사용하는 경우 stale 캐시도 누적되었습니다.
-However, to properly prune stale cache tag entries, Laravel's new `cache:prune-stale-tags` Artisan command should be [scheduled](/docs/{{version}}/scheduling) in your application's `App\Console\Kernel` class:
+그러나 stale 캐시를 적절하게 삭제하기 위해 새로운 `cache:prune-stale-tags` 아티잔 커맨드가 `App\Console\Kernel` 클래스 내에 실행 예정되어 있습니다.
$schedule->command('cache:prune-stale-tags')->hourly();
-### Database
+### 데이터베이스
-#### Database Expressions
+
+#### 데이터베이스 구문
**Likelihood Of Impact: Medium**
+**영향도: 중간**
-Database "expressions" (typically generated via `DB::raw`) have been rewritten in Laravel 10.x to offer additional functionality in the future. Notably, the grammar's raw string value must now be retrieved via the expression's `getValue(Grammar $grammar)` method. Casting an expression to a string using `(string)` is no longer supported.
+(보통 `DB::raw` 형태로 생성되는) 데이터베이스 "구문"이 추가적인 기능을 제공하기 위해 새로 짜여졌습니다. 특히 `getValue(Grammar $grammer)` 메소드 구문을 통해 DB 문법을 따르는 문자열이 제공되어야 한다는 점입니다. `(string)`을 사용해 데이터베이스 표현을 제공하는 방식은 더 이상 지원되지 않습니다.
-**Typically, this does not affect end-user applications**; however, if your application is manually casting database expressions to strings using `(string)` or invoking the `__toString` method on the expression directly, you should update your code to invoke the `getValue` method instead:
+**일반적으로 최종 사용자용 애플리케이션에는 영향을 주지 않습니다**; 그러나, 당신의 애플리케이션이 `(string)` 으로 수동으로 데이터베이스 구문을 제공하고 있거나 `__toString`을 호출하여 데이터베이스 구문을 직접 사용하고 있다면, `getValue` 메소드를 호출하도록 코드를 수정해야 합니다.
```php
use Illuminate\Support\Facades\DB;
@@ -157,33 +173,39 @@ $string = $expression->getValue(DB::connection()->getQueryGrammar());
```
-#### Query Exception Constructor
+
+#### 쿼리 예외 생성자
**Likelihood Of Impact: Very Low**
+**영향도 : 매우 낮음**
The `Illuminate\Database\QueryException` constructor now accepts a string connection name as its first argument. If your application is manually throwing this exception, you should adjust your code accordingly.
+`Illuminate\Database\QueryException` 생성자는 첫 번째 인자로 문자열 타입 연결명을 받습니다. 수동으로 해당 예외를 던지고 있다면, 이에 맞게 코드를 수정해주세요.
+
#### ULID Columns
**Likelihood Of Impact: Low**
+**영향도 : 낮음**
-When migrations invoke the `ulid` method without any arguments, the column will now be named `ulid`. In previous releases of Laravel, invoking this method without any arguments created a column erroneously named `uuid`:
+`ulid` 메소드를 인자 없이 호출할 경우, 컬럼명은 `ulid`가 될 것입니다. 이전 라라벨 버전에서는 인자 없이 이 함수를 호출하면 `uuid`로 틀리게 컬럼이 생성되었습니다.
$table->ulid();
-To explicitly specify a column name when invoking the `ulid` method, you may pass the column name to the method:
+`ulid` 함수 호출 시 컬럼명을 명시하고자 한다면, 컬럼명을 인자로 던져주세요.
$table->ulid('ulid');
### Eloquent
-#### Model "Dates" Property
-**Likelihood Of Impact: Medium**
+#### "Dates" 모델 속성
-The Eloquent model's deprecated `$dates` property has been removed. Your application should now use the `$casts` property:
+**영향도 : 중간**
+
+삭제된 Eloquent 모델의 `$dates` 속성이 삭제되었습니다. 애플리케이션은 `$casts` 속성을 사용해야 합니다.
```php
protected $casts = [
@@ -192,20 +214,22 @@ protected $casts = [
```
-#### Relation `getBaseQuery` Method
-**Likelihood Of Impact: Very Low**
+#### `getBaseQuery` Relation 메소드
-The `getBaseQuery` method on the `Illuminate\Database\Eloquent\Relations\Relation` class has been renamed to `toBase`.
+**영향도 : 매우 낮음**
+
+`Illuminate\Database\Eloquent\Relations\Relation` 클래스 내 `getBaseQuery` 메소드는 `toBase`로 함수명이 변경되었습니다.
### Localization
-#### The Language Directory
-**Likelihood Of Impact: None**
+#### Language 디렉토리
+
+**영향도 : 낮음**
-Though not relevant to existing applications, the Laravel application skeleton no longer contains the `lang` directory by default. Instead, when writing new Laravel applications, it may be published using the `lang:publish` Artisan command:
+이미 생성된 애플리케이션과는 무관하지만, 라라벨 애플리케이션 뼈대는 더 이상 `lang` 디렉토리를 포함하지 않습니다. 대신 새 라라벨 애플리케이션을 생성하는 경우 `lang:publish` 아티잔 커맨드를 이용하여 생성될 수 있습니다.
```shell
php artisan lang:publish
@@ -214,38 +238,43 @@ php artisan lang:publish
### Logging
+
#### Monolog 3
-**Likelihood Of Impact: Medium**
+**영향도 : 중간**
-Laravel's Monolog dependency has been updated to Monolog 3.x. If you are directly interacting with Monolog within your application, you should review Monolog's [upgrade guide](https://github.com/Seldaek/monolog/blob/main/UPGRADE.md).
+라라벨의 Monolog 의존성은 Monolog 3.x 버전으로 업데이트 되었습니다. Monolog와 직접 상호작용한다면, Monolog의 [upgrade guide](https://github.com/Seldaek/monolog/blob/main/UPGRADE.md) 살펴보시기를 권장합니다.
-If you are using third-party logging services such as BugSnag or Rollbar, you may need to upgrade those third-party packages to a version that supports Monolog 3.x and Laravel 10.x.
+만약 BugSnag 이나 Rollbar와 같은 서드 파티 로깅 서비스를 이용하고 있다면 해당 서드파티 패키지를 Monolog 3.x 및 Laravel 10.x 버전에 맞게 업그레이드 해야할 수 있습니다.
### Queues
-#### The `Bus::dispatchNow` Method
-**Likelihood Of Impact: Low**
+#### `Bus::dispatchNow` 메소드
+
+**영향도 : 낮음**
-The deprecated `Bus::dispatchNow` and `dispatch_now` methods have been removed. Instead, your application should use the `Bus::dispatchSync` and `dispatch_sync` methods, respectively.
+`Bus::dispatchNow`와 `dispatch_now` 메소드가 삭제되었습니다. 대신 `Bus::dispatchSync`와 `dispatch_sync` 메소드를 사용하세요.
### Routing
-#### Middleware Aliases
-**Likelihood Of Impact: Optional**
+#### 미들웨어 별칭
-In new Laravel applications, the `$routeMiddleware` property of the `App\Http\Kernel` class has been renamed to `$middlewareAliases` to better reflect its purpose. You are welcome to rename this property in your existing applications; however, it is not required.
+**영향도 : 선택적**
+
+새로운 라라벨 애플리케이션에서 `App\Http\Kernel` 클래스 내 `$routeMiddleware` 속성이 목적에 맞게 `$middlewareAliases`로 변경되었습니다. 사용중인 애플리케이션에서도 속성명을 바꾸는 것이 좋지만, 꼭 필요한 것은 아닙니다.
-#### Rate Limiter Return Values
-**Likelihood Of Impact: Low**
+#### Rate Limiter 반환 값
+
+**영향도 : 낮음**
When invoking the `RateLimiter::attempt` method, the value returned by the provided closure will now be returned by the method. If nothing or `null` is returned, the `attempt` method will return `true`:
+`RateLimiter::attempt` 메소드를 호출할 때 인자로 제공된 클로저에 의해 반환된 값은 메소드로 반환됩니다. 반환된 값이 없거나 `null`인 경우, `attempt` 메소드는 `true`를 반환합니다.
```php
$value = RateLimiter::attempt('key', 10, fn () => ['example'], 1);
@@ -254,11 +283,13 @@ $value; // ['example']
```
-#### The `Redirect::home` Method
+
+#### `Redirect::home` 메소드
**Likelihood Of Impact: Very Low**
+**영향도 : 매우 낮음**
-The deprecated `Redirect::home` method has been removed. Instead, your application should redirect to an explicitly named route:
+`Redirect::home`은 삭제되었습니다. 대신 명시적으로 명명된 경로로 리다이렉트 될 것입니다.
```php
return Redirect::route('home');
@@ -267,24 +298,26 @@ return Redirect::route('home');
### Testing
-#### Service Mocking
-**Likelihood Of Impact: Medium**
+#### 서비스 모킹
+
+**영향도 : 중간**
-The deprecated `MocksApplicationServices` trait has been removed from the framework. This trait provided testing methods such as `expectsEvents`, `expectsJobs`, and `expectsNotifications`.
+`MocksApplicationServices` 트레이트가 삭제되었습니다. 해당 트레이트는 `expectsEvents`, `expectsJobs`, `expectsNotifications` 등의 메소드를 제공했습니다.
-If your application uses these methods, we recommend you transition to `Event::fake`, `Bus::fake`, and `Notification::fake`, respectively. You can learn more about mocking via fakes in the corresponding documentation for the component you are attempting to fake.
+위와 같은 메소드를 사용하고자 한다면, `Event::fake`, `Bus::fake`, `Notification::fake`로 전환할 것을 권장합니다. 각 컴포넌트 문서를 통해 임의값을 만들어 대체하는 법에 대해서 배울 수 있습니다.
### Validation
-#### Closure Validation Rule Messages
-**Likelihood Of Impact: Very Low**
+#### 클로저 유효성 검사 메시지
+
+**영향도 : 매우 낮음**
-When writing closure based custom validation rules, invoking the `$fail` callback more than once will now append the messages to an array instead of overwriting the previous message. Typically, this will not affect your application.
+클로저 기반의 유효성 검사 규칙을 만드는 경우, `$fail` 콜백 함수를 한 번 이상 호출하게 된다면 이전 메시지를 덮어쓰는 대신 배열에 메시지가 추가됩니다. 일반적으로 당신의 애플리케이션에 영향을 주지는 않습니다.
-In addition, the `$fail` callback now returns an object. If you were previously type-hinting the return type of your validation closure, this may require you to update your type-hint:
+이에 더해, `$fail` 콜백 함수는 객체를 반환합니다. 유효성 검사 클로저에 반환값 타입을 기재하였다면, 타입 힌트를 업데이트 해야합니다.
```php
public function rules()
@@ -298,15 +331,16 @@ public function rules()
```
-#### Form Request After Method
-**Likelihood Of Impact: Very Low**
+### Form 요청 After 메소드
+
+**영향도 : 매우 낮음**
-Within form requests, the `after` method is now [reserved by Laravel](https://github.com/laravel/framework/pull/46757). If your form requests define an `after` method, the method should be renamed or modified to utilize the new "after validation" feature of Laravel's form requests.
+form 요청 내 `after` 메소드는 이제 [라라벨이 사전 정의](https://github.com/laravel/framework/pull/46757)합니다. form 요청이 `after` 메소드를 정의하고 있다면, 해당 메소드는 이름을 바꾸거나 라라벨의 새로운 "유효성 검사 다음" 기능을 활용하기 위해 수정되어야 합니다.
-### Miscellaneous
-We also encourage you to view the changes in the `laravel/laravel` [GitHub repository](https://github.com/laravel/laravel). While many of these changes are not required, you may wish to keep these files in sync with your application. Some of these changes will be covered in this upgrade guide, but others, such as changes to configuration files or comments, will not be.
+### 기타
-You can easily view the changes with the [GitHub comparison tool](https://github.com/laravel/laravel/compare/9.x...10.x) and choose which updates are important to you. However, many of the changes shown by the GitHub comparison tool are due to our organization's adoption of PHP native types. These changes are backwards compatible and the adoption of them during the migration to Laravel 10 is optional.
+`laravel/laravel` [GitHub repository](https://github.com/laravel/laravel) 변경 사항을 보시는 것을 권장합니다. 모든 변경 사항이 필요한 것은 아니지만, 일부 파일은 당신의 애플리케이션과 동기화되어야 할 수 있습니다. 어떤 변경 사항은 이 가이드에 의해 다뤄지지만 설정 파일, 주석 등은 그렇지 않을 수 있습니다.
+[GitHub comparison tool](https://github.com/laravel/laravel/compare/9.x...10.x)를 통해 변경 사항과 어떤 업데이트가 중요한지 볼 수 있습니다. 그러나 Github 비교 도구에 의해 보여지는 변경 내용은 우리 조직의 PHP 고유 타입 적용에 의한 것입니다. 라라벨 10 마이그레이션 중 발생하는 이러한 변경은 되돌릴 수 있으며 선택 사항입니다.