티스토리 뷰

반응형

이전 버전과 호환되지 않는 변경 사항

이전 버전과 호환되지 않는 것으로
가장 큰 문제가 있다.

 

애초에 변수에 어떤 값을 담더라도 좀 자유도가 높은게 php였는데 이것이 좀더 엄격하게 된것같다.

그래서 기본 조건문에서는 애초에 비교가 될수없던 것들을 false 로 처리했는데

사라진 함수나 추가된 함수 같은건 직관적으로 처리되지만

if ("" < 0 ) 와 같은 .. 문제

이것이 바로 직관적으로 볼수없는게 해당 위치로
if($A < 0) 이렇게 작성되어있다면 
이것은 $A의 값이 변수를 가져오는지 숫자를 가져오는지 등을 파악해야되는데  $A값이 어디에서 오는지 그 흐름을 다 쫓아가야하고 혹시라도 Database에서 가져오는 것이라면 해당 컬럼(혹은 필드)의 구조를 변경해야되는 상황이 될수있다.

그런데 이것의 제일 고약한 점은 기존에는 당연히 저 조건은 false를 반환했기에
알고리즘 상에서 수많은 부분이 false로 처리되던것들이 
true로 처리되어서 코드에러로 출력되지 않고 사이트에 오작동을 하거나 단순히 오류가 아닌 전달되는 데이타가 달라지는 경우는 웹화면에서 기능오류로 파악되지 않고
차후에 저장된 데이타를 혹은 주고받는 데이타 값이 달라졌을수 있어서 이문제를  파악하는데 수많은 시간이 지난 후에 발견될수도 있을 것이다.

따라서 
5.x를 8.x로 업그레이드 된 상태로 서버를 옮기는 작업은 일반 규모에서는 불가능하고 이런 디버깅 작업을 계속 할 연속적으로 소속된 직원(0명)이 있는 경우에 진행이 가능하다.


사이트 이사의 경우 기존에 5.x라 하면 8.x로 해야하고
8.x에서는 조건문에서 변수의 처리에 대해서는 신중하게 작성해야하고 애초에 변수 자체에 담기는 값이
숫자인지 변수인지..그리고 가령 문자열에서 숫자를 추출하거나 하는 경우 등에서도 항상 데이타타입에 대해서
주의표시를 하고 다음으로 넘어가게 코드를 만들어야된다.

5.x->7.x로 이사가 그나마 현실적이고. 
*배열의 키값에 ''감싸기 주의 , 쿼리문등에서 ''안에 들어갈때 중괄호 주의
*제거된 함수 처리
*등 바뀐 부분에 고민하면될것이다.

8.x의 가장 큰 호환성 문제는

코드에서  값이 없을때  빈값 < 0 을 false로 이용하던 조건들을 전부 수정해야하는 부분이다. 
저것을 단순히 음수인지를 검사한게 아니라 입력받지 못했을때도 통과시키는 걸로 처리한게 많았을텐데
아이구!

 

https://www.php.net/manual/en/migration80.incompatible.php

 

PHP: Backward Incompatible Changes - Manual

PHP is a popular general-purpose scripting language that powers everything from your blog to the most popular websites in the world.

www.php.net

 

 

 

 

 

반응형
댓글
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
글 보관함