Skip to content

Commit

Permalink
2018.02.18 수정사항 반영.
Browse files Browse the repository at this point in the history
  • Loading branch information
findstar committed Feb 18, 2018
1 parent 676640a commit bab8771
Show file tree
Hide file tree
Showing 48 changed files with 494 additions and 169 deletions.
4 changes: 2 additions & 2 deletions artisan.md
Original file line number Diff line number Diff line change
Expand Up @@ -319,9 +319,9 @@

$name = $this->anticipate('What is your name?', ['Taylor', 'Dayle']);

#### 다중 질문 선택
#### 여러개의 선택지

미리 주어진 선택지를 사용자에게 제공하려는 경우에는 `choice` 메소드를 사용하면 됩니다. 사용자는 특정한 값을 선택하고, 결과 값이 돌아옵니다. 아무것도 선택되지 않은 경우에는 기본값을 지정할 수도 있습니다.
미리 주어진 선택지를 사용자에게 제공하려는 경우에는 `choice` 메소드를 사용하면 됩니다. 사용자는 특정한 배열의 인덱스를 선택하고, 결과 값을 선택합니다. 아무것도 선택되지 않은 경우에는 기본값을 지정할 수도 있습니다.

$name = $this->choice('What is your name?', ['Taylor', 'Dayle'], $default);

Expand Down
6 changes: 3 additions & 3 deletions authentication.md
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,7 @@
<a name="included-authenticating"></a>
### 인증하기

이제 인증 컨트롤러에 대한 라우트와 뷰가 설정되었으니, 어플리케이션에 새로운 사용자를 등록하거나 인증할 준비가 되었습니다! 기존 사용자를 인증하거나 새로운 사용자를 데이터베이스에 저장하는 (트레이트-trait를 통한) 로직은 이미 인증 컨트롤러에 포함되어 있으므로, 단순히 브라우저로 여러분의 어플리케이션에 접근만 하면 됩니다.
이제 인증 컨트롤러에 대한 라우트와 뷰가 설정되었으니, 어플리케이션에 새로운 사용자를 등록하거나 인증할 준비가 되었습니다! 기존 사용자를 인증하거나 새로운 사용자를 데이터베이스에 저장하는 (트레이트-trait를 통한) 로직은 이미 인증 컨트롤러에 포함되어 있으므로, 브라우저로 여러분의 어플리케이션에 접근하기만 하면 됩니다.

#### 경로 수정하기

Expand Down Expand Up @@ -286,7 +286,7 @@

#### ID를 통해서 사용자 인증하기

사용자를 ID를 통해 어플리케이션에 로그인 시키려면, `loginUsingId` 메소드를 사용하면 됩니다. 이 메소드는 단순히 인증하고자 하는 사용자의 프라이머리 키를 전달 받습니다:
사용자를 ID를 통해 어플리케이션에 로그인 시키려면, `loginUsingId` 메소드를 사용하면 됩니다. 이 메소드는 인증하고자 하는 사용자의 프라이머리 키를 전달 받습니다:

Auth::loginUsingId(1);

Expand Down Expand Up @@ -326,7 +326,7 @@ PHP FastCGI를 사용하는 경우, HTTP 기본 인증이 제대로 작동하지

<?php

namespace Illuminate\Auth\Middleware;
namespace App\Http\Middleware;

use Illuminate\Support\Facades\Auth;

Expand Down
8 changes: 4 additions & 4 deletions billing.md
Original file line number Diff line number Diff line change
Expand Up @@ -117,7 +117,7 @@

Braintree를 통해서 캐셔를 사용하기 전에 Braintree 설정 패널에서 `plan-credit` 할인을 정의할 필요가 있습니다. 이 할인은 월별 결제에서 년단위 결제로 변경하거나, 반대로 년단위 결제에서 월별 결제로 변경할 때 정확하게 비율을 배분하는데 사용될 것입니다.

이 할인율은 Braintree 설정 패널에서 여러분이 원하는 값으로 설정할 수 있으며 고객이 쿠폰을 적용한 경우 캐셔는 정의된 값을 대체합니다. Braintree는 가입 기간에 비례한 비율을 지원하지 않기 때문에 이 쿠폰이 필요합니다.
이 할인율은 Braintree 설정 패널에서 여러분이 원하는 값으로 설정할 수 있으며 고객이 쿠폰을 적용한 경우 캐셔는 정의된 값을 대체합니다. Braintree는 가입 기간에 비례한 비율을 지원하지 않기 때문에 이 쿠폰이 필요합니다.

#### 데이터베이스 마이그레이션

Expand Down Expand Up @@ -327,7 +327,7 @@ Stripe 신용카드 / 소스 토큰을 전달받아 `create` 메소드는 정기
<a name="cancelling-subscriptions"></a>
### 정기구독 취소하기

정기구독을 취소하기 위해서는, 간단하게 사용자의 정기구독에 대해서 `cancle` 메소드를 호출하면 됩니다:
정기구독을 취소하기 위해서는, 사용자의 정기구독에 대해서 `cancle` 메소드를 호출하면 됩니다:

$user->subscription('main')->cancel();

Expand All @@ -350,7 +350,7 @@ Stripe 신용카드 / 소스 토큰을 전달받아 `create` 메소드는 정기

$user->subscription('main')->resume();

만약 사용자가 구독을 취소하고 다음 정기 구독을 재개하는 경우 그 등록의 만료일이 되기 전까지는 비용이 바로 부과되지는 않습니다. 대신, 사용자의 정기 구독은 손쉽게 재활성화 되며, 원래의 주기에 따라 과금됩니다.
만약 사용자가 구독을 취소하고 다음 정기 구독을 재개하는 경우 그 등록의 만료일이 되기 전까지는 비용이 바로 부과되지는 않습니다. 대신, 사용자의 정기 구독은 재활성화 되며, 원래의 주기에 따라 과금됩니다.

<a name="updating-credit-cards"></a>
### 신용카드 정보 업데이트하기
Expand Down Expand Up @@ -390,7 +390,7 @@ Stripe 신용카드 / 소스 토큰을 전달받아 `create` 메소드는 정기
<a name="without-credit-card-up-front"></a>
### 신용카드없이 사전 등록

고객에게 신용카드에 대한 결제 정보의 사전등록 없이 트라이얼 기간을 부여하고자 한다면, 간단하게 사용자의 `trial_ends_at` 컬럼에 트리이얼 종료기간을 설정하면 됩니다. 이는 일반적으로 사용자를 등록할 때 설정하게 됩니다:
고객에게 신용카드에 대한 결제 정보의 사전등록 없이 트라이얼 기간을 부여하고자 한다면, 사용자의 `trial_ends_at` 컬럼에 트리이얼 종료기간을 설정하면 됩니다. 이는 일반적으로 사용자를 등록할 때 설정하게 됩니다:

$user = User::create([
// Populate other user properties...
Expand Down
14 changes: 13 additions & 1 deletion blade.md
Original file line number Diff line number Diff line change
Expand Up @@ -227,7 +227,7 @@
// $records is "empty"...
@endempty

#### 인증 관련 편의 기능
#### 인증 관련 지시어

`@auth` 그리고 `@guest` 지시어는 현재 접속자가 인증된 사용자인지 아니면 guest 인지 판별하는데 사용가능한 편의 기능입니다:

Expand All @@ -249,6 +249,18 @@
// The user is not authenticated...
@endguest

#### 섹션 지시어

`@hasSection` 지시어를 사용하여 섹션이 내용을 가지고 있는지 확인할 수 있습니다:

@hasSection('navigation')
<div class="pull-right">
@yield('navigation')
</div>

<div class="clearfix"></div>
@endif

<a name="switch-statements"></a>
### 스위치 구문

Expand Down
4 changes: 2 additions & 2 deletions broadcasting.md
Original file line number Diff line number Diff line change
Expand Up @@ -516,14 +516,14 @@ HTTP 라우트와 같이 채널 라우트는 명시적 그리고 묵시적 [라

때로는 라라벨 어플리케이션을 거치지 않고, 연결된 다른 클라이언트에게 이벤트를 브로드캐스트 해야할 수도 있습니다. 이는 특정한 경우 유용할 수 있는데, 어떤 사용자가 화면에 메세지를 "입력"하고 있다는 것을 다른 사용자에게 알리는 경우가 그렇습니다. 클라이언트 이벤트를 브로드 캐스트하려면, Echo의 `whisper` 메소드를 사용하면 됩니다:

Echo.channel('chat')
Echo.private('chat')
.whisper('typing', {
name: this.user.name
});

클라이언트 이벤트를 수신하려면, `listenForWhisper` 메소드를 사용하면 됩니다:

Echo.channel('chat')
Echo.private('chat')
.listenForWhisper('typing', (e) => {
console.log(e.name);
});
Expand Down
45 changes: 43 additions & 2 deletions collections.md
Original file line number Diff line number Diff line change
Expand Up @@ -754,6 +754,47 @@ If you want to stop executing the script after dumping the collection, use the [
]
*/

여러개의 groupBy 기준을 배열로 전달 할 수 있습니다. 각 배열의 요소는 다차원 배열 안에서 해당되는 레벨에 적용됩니다:

$data = new Collection([
10 => ['user' => 1, 'skill' => 1, 'roles' => ['Role_1', 'Role_3']],
20 => ['user' => 2, 'skill' => 1, 'roles' => ['Role_1', 'Role_2']],
30 => ['user' => 3, 'skill' => 2, 'roles' => ['Role_1']],
40 => ['user' => 4, 'skill' => 2, 'roles' => ['Role_2']],
]);

$result = $data->groupBy([
'skill',
function ($item) {
return $item['roles'];
},
], $preserveKeys = true);

/*
[
1 => [
'Role_1' => [
10 => ['user' => 1, 'skill' => 1, 'roles' => ['Role_1', 'Role_3']],
20 => ['user' => 2, 'skill' => 1, 'roles' => ['Role_1', 'Role_2']],
],
'Role_2' => [
20 => ['user' => 2, 'skill' => 1, 'roles' => ['Role_1', 'Role_2']],
],
'Role_3' => [
10 => ['user' => 1, 'skill' => 1, 'roles' => ['Role_1', 'Role_3']],
],
],
2 => [
'Role_1' => [
30 => ['user' => 3, 'skill' => 2, 'roles' => ['Role_1']],
],
'Role_2' => [
40 => ['user' => 4, 'skill' => 2, 'roles' => ['Role_2']],
],
],
];
*/

<a name="method-has"></a>
#### `has()` {#collection-method}

Expand All @@ -779,7 +820,7 @@ If you want to stop executing the script after dumping the collection, use the [

// Desk, Chair

컬렉션이 간단한 문자열 또는 숫자값을 가지고 있다면, 간단하게 "glue" 를 첫번째 인자로 전달하면 됩니다:
컬렉션이 간단한 문자열 또는 숫자값을 가지고 있다면, "glue" 를 첫번째 인자로 전달하면 됩니다:

collect([1, 2, 3, 4, 5])->implode('-');

Expand Down Expand Up @@ -2005,7 +2046,7 @@ If you want to stop executing the script after dumping the collection, use the [
<a name="higher-order-messages"></a>
## Higher Order Messages

컬렉션은 공통된 작업을 수행하는데 필요한 "higher order message"를 제공합니다. 컬렉션에서 higher order message 가 가능한 메소드들은 `average`, `avg`, `contains`, `each`, `every`, `filter`, `first`, `flatMap`, `map`, `partition`, `reject`, `sortBy`, `sortByDesc` `sum` 입니다.
컬렉션은 공통된 작업을 수행하는데 필요한 "higher order message"를 제공합니다. 컬렉션에서 higher order message 가 가능한 메소드들은 `average`, `avg`, `contains`, `each`, `every`, `filter`, `first`, `flatMap`, `map`, `partition`, `reject`, `sortBy`, `sortByDesc`, `sum`, `unique` 입니다.

각각의 higher order message 는 컬렉션 인스턴스의 동적 속성에 접근할 수 있습니다. 예를 들자면, 컬렉션 안에 있는 각 객체의 메소드를 호출하기 위해서 `each` higher order message 를 사용해보겠습니다:

Expand Down
2 changes: 1 addition & 1 deletion configuration.md
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,7 @@

일반적으로 `php artisan config:cache` 명령어를 어플리케이션 배포 루틴의 일부에서 실행하도록 해야 합니다. 어플리케이션 개발 중에는 설정 옵션값이 자주 바뀔 필요가 있기 때문에, 로컬 개발 환경에서는 이 명령어를 실행하지 말아야 합니다.

> {note} 배포가 진행 되는 도중에 `config:cache` 명령어를 실행한다면, 설정 파일안에서 `env` 함수만 호출된다는 것을 확인해야 합니다.
> {note} 배포가 진행 되는 도중에 `config:cache` 명령어를 실행한다면, 설정 파일안에서 `env` 함수만 호출된다는 것을 확인해야 합니다. 한번, 설정이 캐싱되고 나면, `.env` 파일은 로딩되지 않고, 모든 `env` 함수는 `null`을 반환합니다.
<a name="maintenance-mode"></a>
## 점검(공사중) 모드
Expand Down
12 changes: 12 additions & 0 deletions container.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
- [인터페이스dp 구현객체 바인딩하기](#binding-interfaces-to-implementations)
- [문맥에 따른 조건적 바인딩](#contextual-binding)
- [태깅](#tagging)
- [바인딩 확장하기](#extending-bindings)
- [의존성 해결](#resolving)
- [Make 메소드](#the-make-method)
- [자동 주입](#automatic-injection)
Expand Down Expand Up @@ -176,6 +177,17 @@
return new ReportAggregator($app->tagged('reports'));
});

<a name="extending-bindings"></a>
### 바인딩 확장하기

The `extend` method allows the modification of resolved services. For example, when a service is resolved, you may run additional code to decorate or configure the service. The `extend` method accepts a Closure, which should return the modified service, as its only argument:

`extend` 메소드를 사용하여 의존성이 해결된 서비스를 변경할 수 있습니다. 예를 들어, 서비스가 의존성 해결되었을 때, 서비스 객체를 설정하기 위해서 추가적인 코드를 실행할 수 있습니다. `extend` 메소드는 클로저를 인자로 전달 받는데, 변경되는 서비스를 반환해야 합니다:

$this->app->extend(Service::class, function($service) {
return new DecoratedService($service);
});

<a name="resolving"></a>
## 의존성 해결

Expand Down
4 changes: 2 additions & 2 deletions controllers.md
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@

컨트롤러에 대응하는 라우트를 정의 할 때 전체 컨트롤러의 전체 네임 스페이스를 지정할 필요가 없다는 점에 유의해야합니다. `RouteServiceProvider`는 네임 스페이스를 포함하는 라우트 그룹 내에서 라우트 파일을 로드하기 때문에 네임 스페이스의 `App\Http\Controllers` 부분의 뒤에 오는 클래스 이름부분만 지정했습니다.

컨트롤러를 `App \ Http \ Controllers` 디렉토리내에 위치시키려면 `App \ Http \ Controllers` 루트 네임 스페이스와 관련된 특정 클래스 이름을 사용하기 만하면됩니다. 따라서 만약 컨트롤러가 `App\Http\Controllers\Photos\AdminController` 처럼 구성되어 있다면 다음처럼 라우트를 구성하면 됩니다. :
컨트롤러를 `App\Http\Controllers` 디렉토리내에 위치시키려면 `App\Http\Controllers` 루트 네임 스페이스와 관련된 특정 클래스 이름을 사용하면됩니다. 따라서 만약 컨트롤러가 `App\Http\Controllers\Photos\AdminController` 처럼 구성되어 있다면 다음처럼 라우트를 구성하면 됩니다:

Route::get('foo', 'Photos\AdminController@method');

Expand Down Expand Up @@ -324,7 +324,7 @@ API에서 사용할 리소스 라우트를 선언하는 경우, 일반적으로
}
}

컨트롤러 메소드가 라우트 인자로 부터 입력값을 받아야 한다면 간단하게 라우트 인자를 지정하면 됩니다. 예를 들어 다음과 같이 정의할 수 있습니다.
컨트롤러 메소드가 라우트 인자로 부터 입력값을 받아야 한다면 라우트 인자를 지정하면 됩니다. 예를 들어 다음과 같이 정의할 수 있습니다.

Route::put('user/{id}', 'UserController@update');

Expand Down
2 changes: 2 additions & 0 deletions csrf.md
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,8 @@ URI를 CSRF 보호에서 제외시키고 싶을 때가 있습니다. 예를 들
*/
protected $except = [
'stripe/*',
'http://example.com/foo/bar',
'http://example.com/foo/*',
];
}

Expand Down
6 changes: 2 additions & 4 deletions database-testing.md
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@
<a name="resetting-the-database-after-each-test"></a>
## 각각의 테스트 수행 후에 데이터베이스 재설정하기

종종 이전의 테스트를 위한 데이터가 다음에 이어지는 테스트들을 방해하는 것을 막기 위해 각각의 테스트가 끝난 뒤에 데이터베이스를 재설정하는 것이 유용합니다. `RefreshDatabase` 트레이트-trait 은 전통적인 데이터베이스 또는 in-memory 데이터베이스를 사용하는 경우 여러분의 테스트 데이터베이스를 마이그레이션 하는데 가장 적합한 방법입니다. 간단하게 테스트 클래스에 트레이트-trait를 사용하면 손쉽게 처리됩니다:
종종 이전의 테스트를 위한 데이터가 다음에 이어지는 테스트들을 방해하는 것을 막기 위해 각각의 테스트가 끝난 뒤에 데이터베이스를 재설정하는 것이 유용합니다. `RefreshDatabase` 트레이트-trait 은 전통적인 데이터베이스 또는 in-memory 데이터베이스를 사용하는 경우 여러분의 테스트 데이터베이스를 마이그레이션 하는데 가장 적합한 방법입니다. 테스트 클래스에 트레이트-trait를 사용하면 손쉽게 처리됩니다:

<?php

Expand Down Expand Up @@ -110,12 +110,10 @@
use Faker\Generator as Faker;

$factory->define(App\User::class, function (Faker $faker) {
static $password;

return [
'name' => $faker->name,
'email' => $faker->unique()->safeEmail,
'password' => $password ?: $password = bcrypt('secret'),
'password' => '$2y$10$TKh8H1.PfQx37YgCzwiKb.KjNyWgaHb9cbcoQgdIVFlYg7B77UdFm', // secret
'remember_token' => str_random(10),
];
});
Expand Down
5 changes: 3 additions & 2 deletions dusk.md
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@

시작하기 위해서, 컴포저 의존성에 `laravel/dusk`을 추가해야 합니다:

composer require --dev laravel/dusk
composer require --dev laravel/dusk:^2.0

Dusk를 설치하고 나면, `Laravel\Dusk\DuskServiceProvider` 서비스 프로바이더를 등록해야 합니다. 일반적으로는 이 작업은 라라벨의 자동 서비스 프로바이더 등록 기능이 알아서 해줍니다.

Expand Down Expand Up @@ -541,6 +541,7 @@ Assertion | 설명
------------- | -------------
`$browser->assertTitle($title)` | 페이지 타이틀이 주어진 텍스트와 일치하는지 확인.
`$browser->assertTitleContains($title)` | 페이지 타이틀이 주어진 텍스트를 포함하는지 확인.
`$browser->assertUrlIs($url)` | 현재의 URL이 (쿼리 스트링을 제외하고) 주어진 문자열과 일치 하는지 확인.
`$browser->assertPathBeginsWith($path)` | 현재 URL 경로가 주어진 경로로 시작하는지 확인.
`$browser->assertPathIs('/home')` | 현재 경로가 주어진 경로와 일치하는지 확인.
`$browser->assertPathIsNot('/home')` | 현재 경로가 주어진 경로와 일치하지 않는 것을 확인.
Expand Down Expand Up @@ -910,7 +911,7 @@ Dusk 테스트를 수행하기 위해서 CircleCI 2.0를 사용한다면, 빌드
<a name="running-tests-on-codeship"></a>
### Codeship

To run Dusk tests on [Codeship](https://codeship.com), add the following commands to your Codeship project. Of course, these commands are simply a starting point and you are free to add additional commands as needed:
[Codeship](https://codeship.com)에서 Dusk 테스트를 실행하려면, 다음의 명령어들을 Codeship 프로젝트에 추가하십시오. 물론, 이 명령어들은 기본적인 명령어들이며, 필요한 경우 자유롭게 추가할 수 있습니다:

phpenv local 7.1
cp .env.testing .env
Expand Down
2 changes: 1 addition & 1 deletion eloquent-mutators.md
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ accessor를 정의하기 위해서, `Foo` 모델에 접근하고자 하는 컬
}
}

위에서 볼 수 있듯이, 컬럼의 원래 값이 accessor 로 전달되고, 값을 가공하여 반환됩니다. accessor의 값에 액세스하려면, 간단하게 모델 인스턴스의 `first_name` 속성에 액세스하면 됩니다.
위에서 볼 수 있듯이, 컬럼의 원래 값이 accessor 로 전달되고, 값을 가공하여 반환됩니다. accessor의 값에 액세스하려면, 모델 인스턴스의 `first_name` 속성에 액세스하면 됩니다.

$user = App\User::find(1);

Expand Down
Loading

0 comments on commit bab8771

Please sign in to comment.