laravel5.5의 변경점 비망록 발표 노트
노트 를 발행 하다
비공식 문서 (일본어 번역) 발표 노트 등을 보면서 추가한다.
다 보면 힘들기 때문에 신경 쓰이는 것만 발췌한다.
Package Discovery
패키지를 설치하는 데 필요한 config/app.php
에 등록할 필요가 없음providers
, aliases
(포장면composer.json
의 설정에 따라)
API Resources
API를 구축할 때 등에서 엘로퀸트와 실제 되돌아오는 json의 차이를 채우는 전환층Resource
류로 추가된다.( App\Http\Resources
)
구조기로 Eloquent(또는 소장)을 전달하면 $this->id
또는$this->collection
등의 형식으로 모델에 접근할 수 있다.
Validation Rule Objects
이전에는 Validator::extend
로 벽장을 추가한 맞춤형 발리
5.5에서 Rule
류로 추가할 수 있다.
사용 예use App\Rules\ValidName;
$this->validate($request, [
'name' => ['required', new ValidName],
]);
Trusted Proxy Integration
fideloper/TrustedProxy 포장은 5.5에서 App\Http\Middleware\TrustProxies
로 묶여 있다.
다음과 같은 이유로 인해 발생하는 것을 방지하는 상태입니다.
로드 밸런서 뒤에 있는 응용 프로그램을 실행하면 응용 프로그램에서 HTTPS 링크를 생성할 수 없습니다.일반적으로, 이것은 응용 프로그램이 포트 80에서 부하 평형기에서 온 업무를 전송했기 때문에, 안전한 링크가 생길 줄 몰랐기 때문이다.
(이건 포장이 있는데.. 눈치채지 못했다)
Renderable & Reportable Exceptions
이전 버전에서는 각각Exception
의 처리를 맞춤형으로 하기 위해App\Exceptions\Handler
등 유형 검사를 실시하였다.
5.5곳Exception
에서 자체render()
와 report()
를 추가할 수 있다.
이전/**
* Render an exception into an HTTP response.
*
* @param \Illuminate\Http\Request $request
* @param \Exception $exception
* @return \Illuminate\Http\Response
*/
public function render($request, Exception $exception)
{
if ($exception instanceof SpecialException) {
return response(...);
}
return parent::render($request, $exception);
}
5.5<?php
namespace App\Exceptions;
use Exception;
class SpecialException extends Exception
{
/**
* Report the exception.
*
* @return void
*/
public function report()
{
//
}
/**
* Report the exception.
*
* @param \Illuminate\Http\Request
* @return void
*/
public function render($request)
{
return response(...);
}
}
Request Validation
Illuminate\Http\Request
부터 validate()
살이 빠졌다.
또한 Request
뿐만 아니라 Controller
의validate()
의 반환값도 void
가 아니며 검증 규칙의 속성only()
의 반환값도 반환한다.
Illuminate\Foundation\Providers\FoundationServiceProvider.php /**
* Register the "validate" macro on the request.
*
* @return void
*/
public function registerRequestValidate()
{
Request::macro('validate', function (array $rules, ...$params) {
validator()->validate($this->all(), $rules, ...$params);
return $this->only(array_keys($rules));
});
}
validate()의 반환 값 변경 public function store(Request $request)
{
$validated = $request->([
'key1' => 'required',
]);
// $request->all() = ['key1' => 'value1', 'key2' => 'value2']
// $validated = ['key1' => 'value1']
//...
}
Consistent Exception Handling
App\Exceptions\Handler
에서 검증 예외 처리를 통일적으로 설정할 수 있다.
기본 형식 /**
* Convert a validation exception into a response.
*
* @param \Illuminate\Http\Request $request
* @param \Illuminate\Validation\ValidationException $exception
* @return \Illuminate\Http\Response
*/
protected function invalid($request, ValidationException $exception)
{
$url = $exception->redirectTo ?? url()->previous();
return redirect($url)
->withInput($request->except($this->dontFlash))
->withErrors(
$exception->errors(),
$exception->errorBag
);
}
/**
* Convert a validation exception into a JSON response.
*
* @param \Illuminate\Http\Request $request
* @param \Illuminate\Validation\ValidationException $exception
* @return \Illuminate\Http\JsonResponse
*/
protected function invalidJson($request, ValidationException $exception)
{
return response()->json([
'message' => $exception->getMessage(),
'errors' => $exception->errors(),
], $exception->status);
}
Blade Improvements
@if(auth()->check()) ... @else ... @endif
등 조건부는 더욱 선언적으로 진행할 수 있다
AppServiceProvider/**
* Perform post-registration booting of services.
*
* @return void
*/
public function boot()
{
Blade::if('env', function ($environment) {
return app()->environment($environment);
});
}
blade@env('local')
// The application is in the local environment...
@else
// The application is not in the local environment...
@endenv
이와 함께 사용자의 인증 상태를 확인할 수 있는 새로운 @auth
및 @guest
등의 지침이 추가되었습니다.
Reference
이 문제에 관하여(laravel5.5의 변경점 비망록 발표 노트), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/piotzkhider/items/934dd9aed9adfabc699b
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
use App\Rules\ValidName;
$this->validate($request, [
'name' => ['required', new ValidName],
]);
fideloper/TrustedProxy 포장은 5.5에서
App\Http\Middleware\TrustProxies
로 묶여 있다.다음과 같은 이유로 인해 발생하는 것을 방지하는 상태입니다.
로드 밸런서 뒤에 있는 응용 프로그램을 실행하면 응용 프로그램에서 HTTPS 링크를 생성할 수 없습니다.일반적으로, 이것은 응용 프로그램이 포트 80에서 부하 평형기에서 온 업무를 전송했기 때문에, 안전한 링크가 생길 줄 몰랐기 때문이다.
(이건 포장이 있는데.. 눈치채지 못했다)
Renderable & Reportable Exceptions
이전 버전에서는 각각
Exception
의 처리를 맞춤형으로 하기 위해App\Exceptions\Handler
등 유형 검사를 실시하였다.5.5곳
Exception
에서 자체render()
와 report()
를 추가할 수 있다.이전
/**
* Render an exception into an HTTP response.
*
* @param \Illuminate\Http\Request $request
* @param \Exception $exception
* @return \Illuminate\Http\Response
*/
public function render($request, Exception $exception)
{
if ($exception instanceof SpecialException) {
return response(...);
}
return parent::render($request, $exception);
}
5.5<?php
namespace App\Exceptions;
use Exception;
class SpecialException extends Exception
{
/**
* Report the exception.
*
* @return void
*/
public function report()
{
//
}
/**
* Report the exception.
*
* @param \Illuminate\Http\Request
* @return void
*/
public function render($request)
{
return response(...);
}
}
Request Validation
Illuminate\Http\Request
부터 validate()
살이 빠졌다.또한
Request
뿐만 아니라 Controller
의validate()
의 반환값도 void
가 아니며 검증 규칙의 속성only()
의 반환값도 반환한다.Illuminate\Foundation\Providers\FoundationServiceProvider.php
/**
* Register the "validate" macro on the request.
*
* @return void
*/
public function registerRequestValidate()
{
Request::macro('validate', function (array $rules, ...$params) {
validator()->validate($this->all(), $rules, ...$params);
return $this->only(array_keys($rules));
});
}
validate()의 반환 값 변경 public function store(Request $request)
{
$validated = $request->([
'key1' => 'required',
]);
// $request->all() = ['key1' => 'value1', 'key2' => 'value2']
// $validated = ['key1' => 'value1']
//...
}
Consistent Exception Handling
App\Exceptions\Handler
에서 검증 예외 처리를 통일적으로 설정할 수 있다.기본 형식
/**
* Convert a validation exception into a response.
*
* @param \Illuminate\Http\Request $request
* @param \Illuminate\Validation\ValidationException $exception
* @return \Illuminate\Http\Response
*/
protected function invalid($request, ValidationException $exception)
{
$url = $exception->redirectTo ?? url()->previous();
return redirect($url)
->withInput($request->except($this->dontFlash))
->withErrors(
$exception->errors(),
$exception->errorBag
);
}
/**
* Convert a validation exception into a JSON response.
*
* @param \Illuminate\Http\Request $request
* @param \Illuminate\Validation\ValidationException $exception
* @return \Illuminate\Http\JsonResponse
*/
protected function invalidJson($request, ValidationException $exception)
{
return response()->json([
'message' => $exception->getMessage(),
'errors' => $exception->errors(),
], $exception->status);
}
Blade Improvements
@if(auth()->check()) ... @else ... @endif
등 조건부는 더욱 선언적으로 진행할 수 있다AppServiceProvider
/**
* Perform post-registration booting of services.
*
* @return void
*/
public function boot()
{
Blade::if('env', function ($environment) {
return app()->environment($environment);
});
}
blade@env('local')
// The application is in the local environment...
@else
// The application is not in the local environment...
@endenv
이와 함께 사용자의 인증 상태를 확인할 수 있는 새로운 @auth
및 @guest
등의 지침이 추가되었습니다.
Reference
이 문제에 관하여(laravel5.5의 변경점 비망록 발표 노트), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/piotzkhider/items/934dd9aed9adfabc699b텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)