PHP 버전별 히스토리 (etc. 업그레이드 계획)
PHP 5.6.0
- 2014년 8월 28일 발표
PHP 7.0
- 2015년 12월 1일 공개
- 파서 재작성으로 성능 향상 -
PHP 5.6 보다 두배 이상 빠른 속도
- 변수 최적화로
메모리 사용률이 상당히 감소
PHP 5.6 대비(1/5)로 감소 - 추상 구문 트리(Abstract Syntax Tree)
- 일관된 64비트 지원(Consistent 64-bit support)
- 향상된 예외 상속(Improved Exception hierarchy)
- 많은 치명적 에러들이 예외로 전환됨
- 보안 난수 발생기(Secure random number generator)
- 오래됐거나 지원하지 않는 SAPI와 확장 지원 중단
- Null 병법 연산자(The null coalescing operator (??))
- 함수에 리턴 타입 정의, 매개변수에 스칼라 타입 정의 가능
- 익명 클래스(Anonymous Classes)
- Zero c
PHP 7.1
- 2016년 12월 3일 공개
- 일반지원 기간 : 2018-12-01
- 보안 부분 지원기간 : 2019-12-01
- 함수 리턴과 매개변수에 Nullable 지정(Nullable Type)
- 리턴 타입에 이터러블과 Void 지원(Iterable and Void Returns)
- try catch 구문에서 catch에 한 번에 여러 익셉션 감지
- list 함수에서 key 사용 가능
- 배열의 인덱스에 음수 사용 가능
- 이터러블타입인지 확인하는 is_iterable() 함수
PHP 7.2
- 2017년 11월 30일 공개
- 일반지원 기간 : 2019-11-30
- 보안 부분 지원기간 : 2020-11-30
PHP 7.1 대비 10%의 성능 향상
- Mcrypt 확장이 제거됨
- Argon2 해시함수 지원
- 함수의 리턴과 매개변수의 타입으로 object 지정가능.
- 추상 클래스의 추상 메서드를 오버라이딩 가능
- 클래스 오토로딩함수 __autoload -> spl_autoload_register 로 전환
- each 함수 삭제 예고됨 (이터러블로 대체 권장)
PHP 7.3
- 2018년 12월 8일 공개
- 일반지원 기간 : 2020-12-06
- 보안 부분 지원기간 : 2021-12-06
PHP 7.2 대비 성능이 5% 향상
되었다.- FastCGI의 로그 작성이 최적화되었다.
- 기존 여러 줄 작성 가능한 문법 Heredoc, Nowdoc의 유연화
- 배열의 마지막 요소에 , 가능(Trailing commas)
- 어떤 변수가 셀 수 있는 타입인지 체크 강화
- 어떤 변수가 셀 수 있는 타입인지 체크하는 is_countable() 함수 추가
- samesite 쿠키 지원
- list 함수의 기본 동작이 참조 전달(call by references) ->값 복사(call by value)로 전환
- 기존처럼 참조변수 전달 시 & 명시
- 정규식 엔진을 PCRE -> PCRE2로 전환
PHP 7.4
- 2019년 11월 28일 공개
- 일반지원 기간 : 2021-11-28
- 보안 부분 지원기간 : 2022-11-28
- 람다식이라고도 부르는 화살표 함수 추가(Arrow functions)
- 함수 축약 표현식 fn 문법 추가
- 클래스를 미리 메모리에 로딩하는 프리 로딩 추가 (Preloading)
- 클래스 프로터티에 타입 명시 가능
- PHP 코어의 타입 시스템 개선 (Improved type variance)
- Null 병합연산자 추가 (?? 물음표가 두 개이다.) (Null coalescing)
- 배열 전개 연산자 추가 (Array spread operator)
- 외부 함수 인터페이스 FFI 추가로 다른 언어(c나 러스트, go 등)로 작성된 라이브러리 로딩 가능
- 사용자 정의 객체의 직렬화 가능
- 삼항 연산자 중첩 시 왼쪽부터 평가되게 전환 예고(언어의 비일관성 개선)
PHP 8.0
- 2020년 11월 26일 발표
- 일반지원 기간 : 2022-11-26
- 보안 부분 지원기간 : 2023-11-26
- 성능 향상을 위한 JIT 도입 (
0.9~3.0배 빠른 성능
) - 정의되지 않은 변수 검사 등 예외처리 강화
- 에러 출력 안 하게 하는 @연산자 삭제
- Null safe 연산자 지원(javascirpt에서는 옵셔널체이닝이라 불림)
- 애트리뷰트 기능 지원 (자바에서는 어노테이션이라고 불림)
PHP 8.1
- 2021년 11월 25일
- 일반지원 기간 : 2023-11-25
- 보안 부분 지원기간 : 2024-12-25
PHP 8.0 대비 47.10% 빠른 성능
- Enumerations
- Readonly properties
- 경량 스레드 기능인 Fiber 도입
- 파일 변경 사항을 디스크에 강제 동기화하는 fsync 기능
- 클래스 상수 final 사용 가능
- 새로운 명시적 8진수 표기법
PHP 업그레이드 계획
현재 운영 중인 사이트에서 PHP 7.0
과 코드이그나이터
3 을 사용하고 있습니다.
목표는 PHP 8 이상, 라라벨9 이상으로 업그레이드 하는 겁니다.
그러기 위해서는 아래처럼 계획이 잡히네요.
- 현재 : CI 3 + PHP 7.0
- 1차 : CI3 + [PHP 7.4] 업그레이드
- 2차 : [PHP 7.4] + [라라벨 8] + PHP 7.4 업그레이드
- 한 번에 업그레이드할 수 없을 듯하고,
- CI와 라라벨 같이 사용할 수 있는 방안 모색 - 3차 : [라라벨 8] + PHP 7.4 업그레이드
- 4차 : 라라벨8 + [PHP 8.1 이상] 업그레이드
- 5차 : [라라벨9 이상] + [PHP 8.1 이상]
23년까지 2차~3차 완료하는 계획을 잡아 볼 예정입니다.
참고자료
- https://ko.wikipedia.org/wiki/PHP
- https://www.jetbrains.com/ko-kr/lp/php-25/
- https://min-nine.tistory.com/210?category=1060481
- https://www.php.net/supported-versions.php
https://devcheat.tistory.com/6
위의 사이트에서 php8 언어별 벤치마크 한 자료 있습니다. 결과가 재미있네요.
빨리 8.1로 업그레이드하고 싶습니다.
'개발 > PHP' 카테고리의 다른 글
컴포저(Composer)란? - 윈도우 버전 설치하기 (0) | 2022.11.05 |
---|---|
xampp 설치하기 (etc. php 다른 버전 2개 운영하려면.) (0) | 2022.11.05 |
댓글
이 글 공유하기
다른 글
-
컴포저(Composer)란? - 윈도우 버전 설치하기
컴포저(Composer)란? - 윈도우 버전 설치하기
2022.11.05 -
xampp 설치하기 (etc. php 다른 버전 2개 운영하려면.)
xampp 설치하기 (etc. php 다른 버전 2개 운영하려면.)
2022.11.05