PHP 9 는 출시가 계속 미뤄져서 내년은 PHP 8.6 이라고해요
PHP 8.5 11월 20일 출시예요
큰 특징은 파이프 연산자가 생겼다는거네요
$input = ' Some kind of string. '; $temp = trim($input); $temp = str_replace(' ', '-', $temp); $temp = str_replace(['.', '/', '…'], '', $temp); $output = strtolower($temp);
이런 코드가 있다고하면
$output = $input |> trim(...) |> fn (string $string) => str_replace(' ', '-', $string) |> fn (string $string) => str_replace(['.', '/', '…'], '', $string) |> strtolower(...);
이렇게요.
|> 는 opcode 에서 일반 변수할당으로 컴파일되기때문에
성능하락은 없다고 하네요.
PHP 8.4 에서는 LazyObject 가 도입되서 관련해서 성능향상이있었는데
PHP 8.5 는 눈에띄는 성능향상은 없네요.
https://php.watch/versions/8.5
라피
Lv. 2
댓글 3
파이프 연산자와 관련해서 "와~ 편리하겠다!" 라는 느낌이 팍 오는 예제를 찾기가 힘드네요.
위에 쓰신 코드처럼 오히려 더 길고 복잡해지는 경우가 많아서... ㅎㅎ
다른 언어들처럼 $str->trim()->replace(...)->toLower() 이거나 좀 되면 좋겠습니다.
기본적인 것이 안 되니까 자꾸 이상한 방식으로 때우려고 하는 것 같아요.
아무튼 약간의 syntactic sugar 외에는 큰 변화가 없는 업데이트여서
라이믹스도 PHP 8.5에서 유닛 테스트 돌리니까 별다른 문제 없이 다 호환되더군요.^^
그건하려면 string 을 객체로 만들어야되서요
기존 함수들은 c api 처럼 그냥 두고
Text 인가하는 문자열 클래스 만든다고했다가 거절당한거로 기억나네요.
파이프는 같은 클래스에 없어도 되죠.
유닉스/리눅스에 파이프연산처럼 완전 다른거끼리도 그냥 주고받는 역할이니까요
PFA 라고 부분함수 어플리케이션 문법도 8.6에 도입한다네요
파이프랑 PFA 랑 모두 PHP 에 함수형 프로그래밍들 강화예요.
파이프안에서 fn 써야되는게 php 엔진에서 클로저에서 외부변수 캡쳐가 제대로 안되는 문제때문이라는데요.
이게 PHP 8.5 고
PFA 통과하면
Text 클래스 도입관련 내부메일이예요
https://externals.io/message/119149
작성자는 Xdebug 만든 데릭이라는 사람인데
내용은 mb_ 접두사랑 그냥 str 함수들이랑 나뉘어있어서 유니코드를 기본으로하는
문자열 클래스였어요.
반대하는 사람들 의견을 libicu 를 php 가 쓰는데 유니코드를 기본으로 하려면
저 라이브러리가 리눅스에 있거나 익스텐션으로 설치되어야한다면서 의존성문제로 반대하는 의견도있고...
세부 구현 메서드에서 Text->getPositionOfFirstOccurrence, getCodePointCount 나 이런게 있어서 이름이 길고, 메서드명 이상하다, subString 이냐 substring 이냐 이야기하다가 차라리 파이프연산이 있는게 더 좋겠다는 의견이 오갔네요.
그뒤로는 이야기가없는데 오늘날 파이프 연산자가 나온거보면 완전히 중단된게 아닌가 싶어요.