상현에 하루하루

PHP8.1

PHP 8.1: The End

PHP8.1과 함께 제공되는 몇 가지 작은 기능과 변경 사항을 특별한 순서없이 언급하고 싶습니다. 배열에 순서가 지정된 숫자 키만 포함되어 있는지 확인하는 새로운 array_is_list 함수가 있습니다. 클래스 상수 final로 만들 수 있습니다. 파일 변경 사항을 디스크에 강제로 동기화하는 새로운 fsync기능이 있습니다. 새로운 명시적 8진수 표기법이 있습니다. 0o및 0O를 사용하여 8진수를 접두사로 사용할 수 있습니다. 내부 함수에서 … Continued

PHP 8.1: The Never Type

함수가 절대 반환 되지 않을 것임을 나타내는 방법입니다. Never Type은 예외를 던지거나 스크립트를 종료한다는 의미입니다. void와 차이점은 전혀 반환하지 않는 것과 비교하여 함수가 아무 것도 반환하지 않음을 나타냅니다. 이러한 함수를 호출한다는 것은 그 뒤에 오는 코드가 무엇이든 실행되지 않는다는 것을 의미합니다. 여기서 void는 함수가 아무 것도 반환하지 않음을 나타냅니다. never를 추가하여 정적 분석기는 그 기반으로 … Continued

PHP8.1: Fibers

Fibers는 PHP의 훌륭한 추가 기능입니다. green threads로 가는 low-level 방법입니다. 반면에 프로젝트에서 사용할 가능성은 다소 희박합니다. low-level 구성 요소이며 비동기성을 처리하는 라이브러리에서만 사용됩니다. 그럼에도 불구하고 Fibers에 대해 이야기 할 가치가 있습니다. Fibers는 동일한 물리적 프로세스 내에서 병렬 처리하는 하는 방법입니다. Fibers를 사용할 때 실제 다중 스레드 또는 병렬 프로세스가 없습니다. 즉, 코드에서 동시에 실행되는 부분이 … Continued

PHP 8.1: Performance

성능을 이전 버전과 비교할 수 있는 적절한 벤치마크가 없습니다. 하지만 Dmitry는 Inheritance Cache를 추가했습니다. PHP 클래스는 (opcache에 의해) 별도로 컴파일 및 캐시되지만 각 요청에 대해 런타임에 “linking“이 수행됩니다. “linking” 프로세스에는 여러 호환성 검사 및 차용 메서드/속성/상수가 부모 및 특성을 구성하는 과정이 포함될 수 있습니다. 이것은 상당한 시간이 걸리지만 결과는 각 요청에서 동일합니다. Inheritance Cache는 모든 … Continued

PHP 8.1: New in initializers

initializer에서 new 키워드를 사용할 수 있게 되었습니다. 👏👏👏 그게 무엇이냐? 함수의 인수에 기본값을 할당하는 방법을 알고 있습니까? 예를 들어 $title에 대한 빈 문자열은 다음과 같습니다. 기본 객체에서 이제 지정할 수 있습니다. 이 속성은 public readonly 부분을 알아야 이해가 가능합니다.

PHP 8.1: Readonly Properties

PHP 8.0에서는 promoted properties속성이 도입 되었습니다 그리고 이제 readonly properties를 얻었습니다! Awesome! 읽기 전용 속성이 무엇인가? 값을 한 번만 설정하도록 허용하고 그 시점부터 속성 값에 대한 변경을 금지하는 속성입니다. 읽기 전용 속성을 사용하는 것은 값 객체와 데이터 전송 개체를 모델링하는 좋은 방법입니다 차이점 PHP 7.4 이전의 DTO는 다음과 같습니다. PHP 7.4에 유형 속성이 추가되어 문서 … Continued

PHP 8.1: Pure Intersection Types

Pure Intersection Types 한글말로 순수 교차 유형? 순수교차타입은 설명하기에는 쉽지만 정적 분석기와 함께 사용하지 않은 경우 약간 모호하게 보일 수 있습니다. 당신은 이미 union type에 대해 알 것이다. 이 것은 “$foo의 유현은 A또는 B 여야합니다”라고 말합니다. 이 것은 A와 B여야 한다고 말합니다. 교차타입의 위처럼 보이고 아마 추측이 가능했을 것입니다. 그렇다면 이것은 언제 유용할까요? 예를 들어보겠습니다. … Continued

PHP 8.1: 배열 풀기

PHP의 배열 해제는 PHP 7.4부터 포함되어 있었지만 제한사항이 있었습니다. 숫자 키가 있는 배열만 허용되는 것입니다. 그래서 아래 코드는 이미 가능했었습니다. 하지만 아래 코드는 PHP 8.1 이전 버전에서는 정상적으로 동작하지 않았죠 하지만 이제는 이렇게 작동합니다. 그런데 문자열 키를 사용한 배열의 해제가 작동하는 방식은 array_merge의 작동 방식과 정확히 동일합니다. 즉, 동일한 키를 가진 배열의 해제에 대해 새로 … Continued

PHP8.1: First-Class Callables

PHP 8.1에서 호출 가능한 구문을 작성하는 새로운 방법인 First-Class 호출 이전에는 다음과 같이 작성할 수 있었습니다. 즉, 다른 종류의 함수를 참조하는 클로저를 생성하여 해당 클로저를 변수로 사용할 수 있습니다. 이것은 내가 성가신 부분이었습니다. 실제 함수를 참조하는 데 사용되는 ‘문자열’ 이름과 배열에 대해 이야기하는 것입니다. 이러한 클로저를 생성하기 위한 적절한 내장 구문입니다! 다음과 같이 생성하면 됩니다. … Continued

PHP 8.1: Enums

PHP8.1에는 Enums가 추가됩니다. 열거형의 이점은 상수 값의 컬렉션을 나타내지만 가장 중요한 것은 이러한 값을 다음과 같이 입력할 수 있다는 것입니다. 이 예에서 열거형을 만들고 전달하면 BlogPost는 다음과 같습니다. 열거형에 대해 자세히 살펴보겠습니다! Enum methods 열거형은 클래스와 마찬가지로 메서드를 정의할 수 있습니다. 이것은 특히 match 연산자와 함께 사용할 때 매우 강력한 기능입니다. 방법은 다음과 같이 사용할 … Continued