Programming/$_머니 (PHP)

PHP 버전별 차이 (5.6 ~ 7.4)

귀찮은 개발자 2024. 2. 9. 19:09
더보기

기술 블로그 이전으로 인해 2022 년도 4월에 작성된 글 입니다. 

 

모든 언어와 프레임워크, 라이브러리 등 버전이 올라갈 수록 변화한다. 

변화의 범위가 버그 수정일 수 있고, 기능 추가 & 삭제, 네이밍 변경 등이 있다. 

 

PHP 버전을 무지성으로 올리면 에러가 출력되는데 https://www.php.net 을 통해 변경된 함수를 확인하고 적용하면 된다.

그렇기에 각 버전별로 어떠한 이슈가 있었는지 알고 있을 필요는 없다. 

 

예시)

mysql_connect -> mysqli_connect 

7.0  변경 사항

  1. 성능 향상 - PHP 5.6 보다 두배 이상 빠른 속도
  2. 메모리 사용률이 현저히 감소
  3. 추상 구문 트리(Abstract Syntax Tree)
  4. 일관된 64비트 지원(Consistent 64-bit support)
  5. 향상된 예외 상속(Improved Exception hierarchy)
  6. 많은 치명적 에러들이 예외로 전환 됨
  7. 보안 난수 발생기(Secure random number generator)
  8. 오래 됐거나 지원하지 않는 SAPI와 확장 지원 중단
  9. Null 병법 연산자(The null coalescing operator (??))
  10. 리턴 값, 스칼라 타입 정의
  11. 익명 클래스(Anonymous Classes)
  12. Zero cost asserts

7.1  변경 사항

  1. 함수리턴과 매개변수에 Nullable 지정(Nullable Type)
  2. 리턴 타입에 이터러블과 Void 지원(Iterable and Void Returns)
  3. try catch 구문에서 catch 에 한번에 여러익셉션 감지
  4. list 함수에서 key 사용가능
  5. 배열의 인덱스에 음수사용가능
  6. 이터러블타입인지 확인하는 is_iterable() 함수

7.2  변경 사항

  1. PHP 7.1 대비 10%의 성능향상
  2. 함수의 리턴과 매개변수의 타입으로 object 지정가능.
  3. 추상클래스의 추상매서드를 오버라이딩 가능
  4. Argon2 해시함수 지원
  5. 클래스 오토로딩함수 __autoload -> spl_autoload_register 로 전환
  6. each 함수 삭제예고됨 (이터러블로 대체권장)

7.3  변경 사항

  1. PHP 7.2 대비 성능이 5% 향상되었다.
  2. FastCGI 의 로그 작성이 최적화 되었다.
  3. 기존 여러줄 작성가능한 문법 Heredoc, Nowdoc 의 유연화
  4. 배열의 마지막요소에 , 가능(Trailing commas)
  5. 어떤 변수가 셀수있는 타입인지 체크강화
  6. 어떤 변수가 셀수있는 타입인지 체크하는 is_countable() 함수 추가
  7. samesite 쿠키 지원
  8. list 함수의 기본동작이 참조전달(call by references) ->값 복사(call by value) 로 전환

7.4  변경 사항

프리로딩기능이 추가되어서 로딩성능이 10%향상되었다.
기본값은 off이므로 php.ini에서 수동으로 켜야한다.

  1. 람다식이라고도 부르는 화살표함수 추가(Arrow functions)
  2. 함수 축약표현식 fn 문법 추가
  3. 클래스를 미리 메모리에 로딩하는 프리로딩 추가 (Preloading)
  4. 클래스 프로터티에 타입명시 가능
  5. PHP 코어의 타입시스템 개선 (Improved type variance)
  6. Null 병합연산자 추가 (?? 물음표가 두개이다.) (Null coalescing)
  7. 배열 전개연산자 추가 (Array spread operator)
  8. 외부 함수 인터페이스 FFI 추가로 다른언어(c나 러스트, go등)으로 작성된 라이브러리 로딩가능
  9. 사용자 정의 객체의 직렬화 가능
  10. 삼항연산자 중첩시 왼쪽부터 평가되게 전환예고(언어의 비일관성 개선)