>  기사  >  PHP 프레임워크  >  Laravel 9.5 버전의 새로운 추가사항, 수정사항, 변경사항을 요약해 보세요!

Laravel 9.5 버전의 새로운 추가사항, 수정사항, 변경사항을 요약해 보세요!

WBOY
WBOY앞으로
2022-03-21 09:57:162518검색

이 기사는 laravel에 대한 관련 지식을 제공합니다. Laravel 팀은 부분 대기열 위조, FreezeTime() 보조 함수, Storage AssertDirectoryEmpty() 어설션 등을 포함하는 버전 9.5를 출시했습니다. 모든 사람에게 도움이 되기를 바랍니다.

Laravel 9.5 버전의 새로운 추가사항, 수정사항, 변경사항을 요약해 보세요!

【관련 권장 사항: laravel video

Laravel 팀은 부분 큐 위조, FreezeTime() 도우미 기능, 저장 AssertDirectoryEmpty() 어설션, AssertJsonPath()의 클로저 등을 포함하는 버전 9.5를 출시했습니다.:

컬렉션 Implode 메서드에 대한 콜백 지원

@Lito는 Collect::implode()에서 콜백 지원을 제공하여 ->map()->implode() 호출을 단순화했습니다.

// 之前<br/>{{ $user->cities->map(fn ($city) => $city->name.&#39; (&#39;.$city->state->name.&#39;)&#39;)->implode(&#39;, &#39;) }}<br/>// 使用回调 <br/>{{ $user->cities->implode(fn ($city) => $city->name.&#39; (&#39;.$city->state->name.&#39;)&#39;, &#39;, &#39;) }}<br/>

저장소 가짜 어설션 사용 빈 디렉터리

Mark Beech는 Storage::fake() 인스턴스를 사용하여 빈 디렉터리를 어설션하는 기능을 제공했습니다.

// 9.5 版本之前<br/>$this->assertEmpty(Storage::disk(&#39;temp&#39;)->allFiles(&#39;/foo&#39;));<br/>// +9.5<br/>Storage::disk(&#39;temp&#39;)->assertDirectoryEmpty(&#39;/foo&#39;);<br/>

디렉토리에 파일이 없고 다른 하위 디렉터리만 있는 경우 다른 폴더/파일이 포함되어 있으므로 어설션이 실패합니다. 다음은 끌어오기 요청 토론의 예입니다.

Storage::fake(&#39;temp&#39;);<br/>Storage::disk(&#39;temp&#39;)->put(&#39;/foo/bar.txt&#39;, &#39;string&#39;);<br/>Storage::disk(&#39;temp&#39;)->assertDirectoryEmpty(&#39;/&#39;); // 失败<br/>

JSON 어설션 "assertJsonPath()"는 이제 클로저를 허용합니다.

Fabien Villepinte는 이전 버전과 호환되는 중단 없이 클로저를 AssertJsonPath에 전달하는 기능을 제공했습니다.

$response = TestResponse::fromBaseResponse(new Response([<br/>    &#39;data&#39; => [&#39;foo&#39; => &#39;bar&#39;],<br/>]));<br/>$response->assertJsonPath(&#39;data.foo&#39;, &#39;bar&#39;);<br/>$response->assertJsonPath(&#39;data.foo&#39;, fn ($value) => $value === &#39;bar&#39;);<br/>

위의 예는 더 간단해 보이지만 문자열 버전을 사용하면 경로 어설션에 대해 더 복잡한 논리가 필요한 경우 이제 클로저를 사용할 수 있습니다.

부분 대기열 위조

Taylor Otwell은 테스트 중인 대기열에 대한 부분 위조에 기여했습니다.

Queue::fake([JobsToFake::class, /* ... */]);<br/>

"통과" 모델을 생성하는 새로운 방법

Hafez Divandari는 새로운 " through" 모델 기능:

// Define a `newThroughInstance` method<br/>protected function newThroughInstance($resource)<br/>{<br/>    return (new \App\Models\ExampleEntity)->setTable($resource);<br/>}<br/>

새로운 문자열 래핑 도우미 기능

Markus Hebenstreit이 Wrap() 문자열 도우미 기능에 기여했습니다. 다음은 풀 요청 설명의 사용 예입니다.

Str:wrap(&#39;value&#39;)->wrap(&#39;"&#39;);<br/>Str::of(&#39;value&#39;)->wrap(&#39;"&#39;);<br/>str(&#39;value&#39;)->wrap(&#39;"&#39;);<br/>// 输出: "value"<br/>Str:wrap(&#39;is&#39;, &#39;This &#39;, &#39; me!&#39;);<br/>Str::of(&#39;is&#39;)->wrap(&#39;This &#39;, &#39; me!&#39;);<br/>str(&#39;is&#39;)->wrap(&#39;This &#39;, &#39; me!&#39;);<br/>// 输出: This is me!<br/>

테스트를 위한 Freeze Time 도우미 기능

@Italo는 테스트에서 현재 시간을 고정하는 테스트 메서드인 FreezeTime() 도우미 기능을 제공했습니다.

public function test_something()<br/>{<br/>    $this->freezeTime();<br/>    // 或将时间设置为日期的当前秒<br/>    // 没有亚秒级精度。<br/>    $this->freezeSecond();<br/>}<br/>

FreezeTime( ) 메서드는 다음에 대한 구문 설탕입니다.

$this->travelTo(Carbon::now());<br/>

Http::beforeSending()에서 호출 가능한 개체를 허용합니다.

Dries Vints는 단지 호출 가능한 클래스만 허용하는 대신 Http::beforeSending() 메서드에서 호출 가능한 개체를 허용하는 데 도움이 됩니다. 이제 "배열에서 __invoke() 멤버 함수 호출" 대신 다음 예제가 작동합니다.

Http::baseUrl(&#39;https://api.example.org&#39;)<br/>    ->beforeSending([ $this, &#39;prepareRequest&#39; ])<br/>    ->asJson()<br/>    ->withoutVerifying();<br/>

릴리스 노트

아래에서 새로운 기능과 업데이트의 전체 목록을 확인하고 GitHub에서 9.4.0을 확인할 수 있습니다. 9.5.0과 9.5.0의 차이점 다음 릴리스 노트는 변경 로그에서 직접 가져온 것입니다.

버전 9.5.0

New

  • 에는 implode 수집 방법에 대한 콜백 지원이 추가되었습니다. (#41405)

  • Illuminate/Filesystem/FilesystemAdapter::assertDirectoryEmpty()를 추가했습니다. (#41398)

  • SesTransport에 대한 이메일 "메타데이터"를 구현합니다. (#41422)

  • ertPath()가 클로저를 허용하도록 만드세요. (#41409)

  • 컬렉션의 OperatorForWhere에 대한 호출 가능 지원을 추가했습니다. (#41414, #41424)

  • 부분 대기열 위조를 추가했습니다. (#41425)

  • schedule:test 명령에 –name 옵션을 추가했습니다. (#41439)

  • 은 Illuminate/Database/Eloquent/Concerns/HasRelationships::newRelatedThroughInstance()를 정의합니다. (#41444)

  • Illuminate/Support/Stringable::wrap()을 추가했습니다. (#41455)

  • 테스트를 위해 "freezeTime" 도우미 기능을 추가했습니다. (#41460)

  • Illuminate/Http/Client/PendingRequest.php::runBeforeSendingCallbacks()에서 beforeSending 호출의 사용을 허용합니다. (#41489)

FIX

  • 이름이나 도메인을 필터링할 때 Route:list의 지원 중단 경고를 수정했습니다. (#41421)

  • URL이 빈 상태 코드를 반환할 때 HTTP::pool 응답을 수정했습니다. (#41412)

  • Illuminate/Session/Middleware/AuthenticateSession.php에서 리콜러 이름 확인을 수정했습니다. (#41429)

  • /Illuminate/Session/Middleware/AuthenticateSession.php에서 가드 인스턴스가 사용되는 문제를 수정했습니다. (#41447)

  • 고정 경로:list –제외 공급업체, 숨겨진 경로에서 변경됨 사용 ::view () & Route::redirect () (#41465)

  • IlluminateDatabaseEloquentFactoriesFactory의 연결 속성에 빈 유형을 추가하세요. (#41418)

  • GeneratorCommand에서 예약된 이름을 업데이트했습니다. (#41441)

  • 다시 디자인된 php artisan Schedule:list 명령. (#41445)

  • 확장된 뛰어난 고차 프록시 속성입니다. (#41449)

  • 명명된 매개변수를 동적 로컬 범위에 전달하는 것을 허용합니다. (#41478)

  • 태그가 통과했지만 Illuminate/Encryption/Encrypter.php에서 지원되지 않는 경우 예외를 발생시킵니다. (#41479)

  • Composer Vendor 폴더가 프로젝트 폴더에 없는 경우 Update PackageManifest::$vendorPath가 초기화됩니다. (#41463)

[관련 추천: laravel 비디오 튜토리얼]

위 내용은 Laravel 9.5 버전의 새로운 추가사항, 수정사항, 변경사항을 요약해 보세요!의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 learnku.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제