PHP 의 일관성없다는 비난을 줄이기 위한 변경.. (8.5) 정보
PHP 의 일관성없다는 비난을 줄이기 위한 변경.. (8.5)
본문
끊임없이 고쳐나가는 PHP...
https://wiki.php.net/rfc/warnings-php-8-5
PHP 8.5 소식인데요.
$array[new stdClass()] <- 이런 코드가있을때
또는
$b = null;
if(isset($b['mb_id']) {
}
// 이런 코드는 많죠
-
배열에 유효하지 않은 오프셋 접근:
TypeError
발생 (예:$array[new stdClass()]
) -
문자열에 유효하지 않은 오프셋 접근:
-
isset()
:false
반환, 아무 경고/오류 없음 -
empty()
:true
반환, 아무 경고/오류 없음 -
??
(null-coalescing operator):TypeError
발생
-
현재는 저렇게 세가지의 다른 동작인데요.
일관성있게 한다고 바꾼다네요.
그래서 이제 배열이 아닌 변수들에 isset 함수를 쓰면 경고 낼것이고 9 부터는 타입오류로 할거라네요.
PHP 의 컴플렉스는 일관성없다는건데
그거 고친다고 진통이 크겠네요.
다른 개발자가 보면 처음부터 멀쩡한 언어 쓰지 그랬냐라고 할듯...ㅠ
php 동작인데 이제 단순화 되겠군요.
2
베스트댓글

@techstar
PHP 엔진 측면에서는
타입 예측의 어려움, 그로인한 JIT 성능하락... 정적분석기의 한계.
그리고 이제는 제네릭 도입을 위해 타입추론도 정리필요성이 있고요
대략 6년전부터 바꾸려고 계속했어요.
사람들은 로그파일에 배열 offset notice 보고 그냥 isset 만 추가해버리니
또 문제생긴거구요

PHP를 버전업 하기 어려운 이유들이 계속 늘어납니다 ㅎㅎ
저는 PHP로 만든 사이트는 버전업 하는걸 포기한지 오래입니다.ㅠㅠ
공격들어오면 그냥 다른 언어나 플랫폼으로 새로 만드는게 훨씬 속편하네요 ㅠㅠ
댓글 5개
함수가 많으면 산으로 간다고 하긴하는데.ㅋㅋ

@techstar
PHP 엔진 측면에서는
타입 예측의 어려움, 그로인한 JIT 성능하락... 정적분석기의 한계.
그리고 이제는 제네릭 도입을 위해 타입추론도 정리필요성이 있고요
대략 6년전부터 바꾸려고 계속했어요.
사람들은 로그파일에 배열 offset notice 보고 그냥 isset 만 추가해버리니
또 문제생긴거구요

PHP를 버전업 하기 어려운 이유들이 계속 늘어납니다 ㅎㅎ
저는 PHP로 만든 사이트는 버전업 하는걸 포기한지 오래입니다.ㅠㅠ
공격들어오면 그냥 다른 언어나 플랫폼으로 새로 만드는게 훨씬 속편하네요 ㅠㅠ

버전업 화이팅입니다.