PHP 8.5 파이프 연산자(|>) 도입
(thephp.foundation)- PHP 8.5에 파이프 연산자(|>) 가 공식 추가되어, 함수형 프로그래밍 스타일의 체이닝이 가능해짐
- 파이프 연산자는 왼쪽 값을 오른쪽 함수(callable)의 인자로 전달하는 문법적 설탕(syntax sugar) 역할을 하며, 복잡한 데이터 변환 파이프라인을 간결하게 작성할 수 있음
- 기존에는 중첩 호출 혹은 임시 변수 남발이 필요했던 코드가 가독성 좋은 체인 표현식으로 바뀌어, 유지보수성과 활용도가 크게 향상됨
- F#, OCaml, Elixir 등 여러 함수형 언어의 유사 기능에서 영감을 받았으며, PHP 내부에서도 여러 번 제안과 개선 끝에 2025년에 드디어 정식 도입됨
- 파이프 연산자는 앞으로 Partial Function Application(부분적 함수 적용), 함수 합성 연산자 등 함수형 패러다임 확장과도 밀접하게 연결될 예정
- PHP 8.5(2025년 11월 예정)에서 오랜 시간 커뮤니티에서 요구한 작은 변화지만 큰 잠재력을 가진 파이프 연산자(|>) 가 추가됨
- 구현은 단순하지만, 코드의 표현력을 비약적으로 높여주는 기능으로 평가됨
PHP 8.5 파이프 연산자란?
- 파이프 연산자
|>
는 왼쪽의 값을 오른쪽 함수에 인자로 전달하는 간단한 연산자임- 함수의 파라미터 입력을 단순화해주는 문법적 설탕(syntax sugar)
- 예시:
$result = "Hello World" |> strlen(...); // 위 코드는 아래와 동일한 의미를 가짐 $result = strlen("Hello World")
-
여러 함수를 연결(chain)할 수 있어 데이터 변환 파이프라인을 한 줄씩 작성 가능
$result = $arr |> fn($x) => array_column($x, 'tags') |> fn($x) => array_merge(...$x) |> array_unique(...) |> array_values(...);
- 기존 방식대로라면 복잡하게 중첩하거나, 임시 변수를 많이 선언해야 하는 불편함이 존재함
- 이 연산자는 유닉스/리눅스 셸의 파이프(|) 와 유사하게 설계되어 직관성이 높음
도입 배경과 역사
- F#, OCaml, Elixir 등 함수형 언어의 파이프와 유사한 개념임
- PHP에서도 여러 라이브러리가 유사한 기능을 제공하나, 성능 저하 및 복잡성 문제가 발생함
- Hack/HHVM(Facebook의 PHP 포크)에서 유래, PHP에서도 2016년 최초 제안 이후 여러 번 RFC가 부결됨
- 2025년 드디어 표준 문법으로 통과, First Class Callables(배열 함수 호출 문법) 등 이전 도입 기능과 연계
활용 예시와 특징
- 복잡한 배열 처리, 문자열 가공, 데이터 스트림 처리 등에서 임시 변수 없이 직관적으로 함수 연결 가능
- match() 등 단일 식만 허용되는 문맥에서도 체인 사용이 가능해져 코드 활용도가 극대화됨
- 오른쪽에는 함수 호출 뿐만 아니라 클로저(Closure), 고차 함수 반환 등 다양한 패턴을 활용 가능
함수형 패러다임 강화
- 파이프는 임의의 함수, 클로저, 고차 함수 모두와 결합될 수 있음
- 예시: 조건적(Null-safe) 체인, Maybe Monad, 스트림 처리 등 다양한 함수형 패턴과 자연스럽게 호환
- 파이프 +
maybe()
같은 고차 함수로 null 안전 파이프라인도 구현 가능
향후 발전 방향
- Partial Function Application(부분 함수 적용)과의 결합이 예정되어, 더욱 다양한 함수 조합이 가능해질 전망
- 함수 합성 연산자(composition operator)도 제안 중으로, 복수 map 등 체인을 한 번에 결합하는 최적화가 가능해질 것
파이프 연산자는 단순한 문법 추가 이상의 생산성·가독성·확장성 혁신을 제공하며, PHP 8.5 이후 함수형 프로그래밍 스타일 코드 작성이 훨씬 강력해질 것으로 기대됨