5P by neo 6일전 | favorite | 댓글 3개
  • 속성 훅, 비대칭 가시성, 업데이트된 DOM API, 성능 향상, 버그 수정 및 일반적인 정리가 포함
    • IDE와 정적 분석 도구가 네이티브로 이해할 수 있는 계산 속성을 지원하는 속성 훅 제공
    • 속성의 읽기와 쓰기 범위를 독립적으로 제어할 수 있는 비대칭 가시성 도입.
  • 새로운 기능
    • #[\Deprecated] 속성을 통해 사용자 정의 함수, 메서드 및 클래스 상수에 PHP의 기존 사용 중단 메커니즘을 적용 가능.
    • 새로운 DOM API는 HTML5 문서 파싱을 위한 표준 준수 지원을 포함하며, DOM 기능의 여러 오래된 호환성 버그를 수정함.
    • BcMath\Number 객체를 사용하여 임의의 정밀도 숫자를 객체 지향적으로 처리 가능.
    • array_find(), array_find_key(), array_any(), array_all() 등의 새로운 배열 함수 제공.
    • PDO의 새로운 하위 클래스 Pdo\Dblib, Pdo\Firebird, Pdo\MySql, Pdo\Odbc, Pdo\Pgsql, Pdo\Sqlite 제공.
    • 새로 인스턴스화된 객체의 속성과 메서드를 괄호 없이 접근 가능.
  • 새로운 클래스, 인터페이스 및 함수
    • 새로운 Lazy Objects, IR Framework 기반의 JIT 구현.
    • request_parse_body() 함수, bcceil(), bcdivmod(), bcfloor(), bcround() 함수 추가.
    • DateTime::createFromTimestamp(), DateTime::getMicrosecond(), DateTime::setMicrosecond() 등의 메서드 추가.
    • mb_trim(), mb_ltrim(), mb_rtrim(), mb_ucfirst(), mb_lcfirst() 함수 추가.
    • pcntl_getcpu(), pcntl_getcpuaffinity(), pcntl_getqos_class(), pcntl_setns(), pcntl_waitid() 함수 추가.
    • ReflectionClassConstant::isDeprecated(), ReflectionGenerator::isClosed(), ReflectionProperty::isDynamic() 메서드 추가.
    • http_get_last_response_headers(), http_clear_last_response_headers(), fpow() 함수 추가.
    • XMLReader::fromStream(), XMLReader::fromUri(), XMLReader::fromString(), XMLWriter::toStream(), XMLWriter::toUri(), XMLWriter::toMemory() 메서드 추가.
    • grapheme_str_split() 함수 추가.
  • 사용 중단 및 호환성 깨짐
    • IMAP, OCI8, PDO_OCI, pspell 확장 기능이 번들에서 제거되어 PECL로 이동됨.
    • 암시적으로 nullable한 매개변수 유형이 사용 중단됨.
    • 클래스 이름으로 _ 사용이 사용 중단됨.
    • 0을 음수의 거듭제곱으로 올리는 것이 사용 중단됨.
    • 잘못된 모드를 round()에 전달하면 ValueError 발생.
    • 확장 기능의 클래스 상수가 이제 타입이 지정됨.
    • GMP 클래스가 이제 final로 지정됨.
    • MYSQLI 관련 상수와 함수가 사용 중단됨.
    • stream_bucket_make_writeable()stream_bucket_new()가 이제 StreamBucket 인스턴스를 반환함.
    • exit()의 동작 변경.
    • E_STRICT 상수가 사용 중단됨.
  • 성능 및 문법 개선
    • 성능 향상, 문법 개선, 타입 안전성 향상.
    • PHP 8.4로 업그레이드 권장.

워드프레스, 라라벨 덕분에 최소한 굶어죽지는 않을 언어

워드프레스, 라라벨 망해도 굶어죽지 않을 언어입니다.

Hacker News 의견
  • $this->countryCode가 무한 재귀를 일으키지 않는 이유는 RFC에 명시되어 있음. PHP의 속성 접근이 맥락에 따라 다른 의미를 가질 수 있다는 점이 마법처럼 느껴짐.

    • 속성 접근이 메서드 호출로 변환되는 언어의 마법이 있음.
    • PHP 사용자는 아니지만, 이러한 복잡성이 언어에 추가되는 것이 우려됨.
  • PHP 프로그래머로서 PHP의 방향성에 대해 걱정됨. 새로운 언어 기능들이 의심스러운 이득을 위해 언어 복잡성을 높임.

    • 속성 후크는 속성 접근이 메서드 호출로 변환됨을 의미함.
    • JS와 Perl에서 이와 유사한 기능을 사용했지만, 명시적인 메서드가 더 명확하고 확장하기 쉬움.
  • PHP가 여전히 번창하고 있음에 기쁨을 느낌. 2021년에는 Nikita Popov의 이탈로 걱정했지만, PHP는 여전히 좋은 언어로 많은 개발자들이 활동 중임.

  • 속성 후크에 가장 기대됨. C#에서 그리웠던 기능임.

    • __get()__set()을 사용해 흉내내기도 했지만, 이는 무겁고 많은 PHPDoc 주석이 필요했음.
  • 배열 접근자 오버로딩을 보다가 "Property Hooks"를 발견함. 최근에 추가된 기능임을 알고 놀람.

    • 다른 언어의 표현력과 문법적 설탕이 PHP에 도입된 것을 기쁘게 생각함.
  • PHP의 새로운 릴리스에 만족함. 클로저에 대한 더 나은 스택 추적, 성능 개선, HTML5 지원, 레이지 객체 등 많은 개선이 이루어짐.

  • bcmath 객체에 대해 기대됨. 산술 연산자보다는 래퍼 클래스 없이 데이터 타입 검사를 할 수 있게 된 점이 좋음.

  • PHP가 여전히 발전하고 있음에 기쁨. 프리랜서로 시작했을 때의 기억이 떠오름.

  • PHP의 새로운 array_find 함수는 언어 설계의 문제를 보여줌. 기존의 array_search와 유사하지만 인수 순서가 다름.

    • 다른 언어들이 이러한 함수를 가지고 있다는 이유로 PHP에도 추가되었지만, 대부분의 언어는 이를 전역 함수로 만들지 않음.
  • "public private(set)"이 이해되지 않음. "readonly public"이 더 적절해 보임.

    • Swift의 private(set)과 유사해 보임.