9P by GN⁺ 4달전 | ★ favorite | 댓글 6개
  • 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 이후 함수형 프로그래밍 스타일 코드 작성이 훨씬 강력해질 것으로 기대됨

그래도 안써요...

좋네요 ㅎㅎ 파이썬에도 관련 논의가 이어지고 있는 것으로 알고 있는데 부디 유사 기능이 추가되었으면 좋겠네요.

PHP 8.5(2024년 11월 예정) -> PHP 8.5(2025년 11월 예정)

애증의 언어에서 이제 다시 돌아볼만한 언어가 되어가고 있는 PHP...!

좋당... 부럽당...

ECMA 에도 넣어주십시오~~~