라라벨 5.8.30 새기능 free

2019-08-02

벨 5.8.30이 출시됐습니다. 추가된 기능은 다음과 같습니다.



  • MakesHttpRequests::options()와 MakesHttpRequests::optionJson() 메서드 추가 (#29258)

  • Blueprint::uuidMorphs()와 Blueprint::nullableUuidMorphs() 메서드 추가 (#29289)

  • MailgunTransport::getEndpoint()와 MailgunTransport::setEndpoint() 메서드 추가 (#29312)

  • 이미지 유효성 검증 규칙에 WEBP 추가 (#29309)

  • TestResponse::assertSessionHasInput() 메서드 추가 (#29327)

  • 커스텀 레디스 드이버 지원 (#29275)

  • Postgres 컬럼에 collation() 지원 (#29213)


MakesHttpRequests::options()와 MakesHttpRequests::optionJson() 메서드 추가


OPTION 리퀘스트를 테스트할 수 있도록 추가된 기능입니다. HTTP 테스트 작성시 아래와 같이 OPTION 리퀘스트를 할 수 있습니다.


$this->option('/example');
$this->optionJson('/api/example');

Blueprint::uuidMorphs()와 Blueprint::nullableUuidMorphs() 메서드 추가


기존 마이그레이션 작성시 컬럼 타입에 morphs()nullableMorphs()가 있었습니다. 이 두 메서드는 타입과 아이디 컬럼을 만드는데, 벨은 아이디를 BIGINT로 가정하고 있기 때문에 아이디 컬럼도 BIGINT(20)로 생성합니다. 하지만 아이디를 BIGINT가 아닌 UUID를 쓰는 경우도 있습니다. 이때 UUID는 CHAR(36)이기 때문에 BIGINT(20)로는 처리할 수 없습니다. 그래서 UUID를 쓰는 경우 morphs()nullableMorphs()를 쓰는 대신 직접 컬럼을 생성하고 인덱스를 걸어야 했습니다. 5.8.30 부터는 UUID를 쓰는 경우 uuidMorphs(), nullableMorphs()로 편리하게 작성할 수 있게 되었습니다.


이미지 유효성 검증 규칙에 WEBP 추가


WEBP 포맷을 사용하는 웹사이트가 늘어나고 있고, 구글이 강력히 밀고 있다고 하네요. 구글 WebP 이미지 포맷 아세요? 구글 크롬에서 WebP를 PNG로 변경해 다운로드 받기는 글에 WEBP 포맷 관련 내용이 잘 정리되어 있네요.


TestResponse::assertSessionHasInput() 메서드 추가


어제 글의 주인공이었던 제이슨 맥크레리가 PR을 보낸 기능이네요. 벨은 유효성 검증에 실패하면 기존 입력값을 세션에 담아 되돌려줍니다. 이 상황에 해당하는 메서드를 추가한 듯 하네요. 아래 두 예제를 보면 쉽게 이해 되실거 생각합니다.


이전에는 _old_input 키에 해당 값이 있는지 확인했어야 했습니다.


$response->assertSessionHas('_old_input', [
'connection_id' => $connection->id,
'repository' => $repository,
'source_branch' => $branch,
]);

새로 추가된 메서드를 쓰면 아래와 같이 됩니다.


$response->assertSessionHasInput([
'connection_id' => $connection->id,
'repository' => $repository,
'source_branch' => $branch,
]);

커스텀 레디스 드이버 지원


제안자가 자신의 회사는 커스텀 드이버를 쓰는데 벨이 phpredispredis만 지원해서 커스텀 레디스 드이버를 쓸 수 있도록 기능을 추가했다고 하네요.


서비스 프로바이더에서 extend() 메소드로 확장하고, database.php 설정 파을 변경해서 커스텀 레디스 드이버를 쓸 수 있습니다.


우선 서비스 프로바이더에서 확장합니다.


public function boot()
{
$this->app->make('redis')->extend('my_very_specific_connnector', function () {
return new MyVerySpecificConnector()
});
}

database.php 설정 파을 수정합니다.


// ...

'redis' => [
'client' => 'my_very_specific_connnector',

// ...
],

Postgres 컬럼에 collation() 지원


그간 Postgres는 마이그레이션을 작성할 때 collation을 설정하는 기능이 없었다고 하네요. 이제 아래와 같이 collation을 설정할 수 있습니다.


Schema::create('users', function (Blueprint $table) {
$table->string('name')->collation('nb_NO.utf8');
});


* MailgunTransport::getEndPoint()와 MailgunTransport::setEndpoint() 메서드 추가는 너무 특정한 서비스에 해당하는 내용이 다루지 않았습니다.


유료 구독자 전용 레터입니다.

한 달 1만원으로 매일 라라벨 관련 메일 받아보시고 과거 메일도 열람하세요. 일반 구독으로 공개글만 받아보실 수도 있습니다.

구독하기 버튼을 눌러주시면 구독과 동시에 xly에도 가입됩니다.

이현석

바쁜 팀장님 대신 알려주는 신입 PHP 개발자 안내서를 쓰고, 클린 아키텍처 인 PHP를 번역했습니다. 2020년에 출간될 Laravel Up & Running 2nd Edition을 번역하고 있습니다.