PHP 8.0으로 업그레이드한 후 코드를 실행할 때 다음과 같은 오류가 발생합니다:
“Deprecated: Required parameter $config follows optional parameter $p in /… / on line 204″
여기 라인 #204 (public function ..)
public function _createSettingsImportSuccessNotice(ContainerInterface $c, $p = null, $config) { $notice = $this->_createNotice(array( 'id' => 'settings_import_success', 'notice_type' => NoticeInterface::TYPE_UPDATED, 'condition' => $this->_getCommandIsWprssPage($c), 'content' => $this->_autoParagraph(__('Your settings were imported successfully', 'wprss')), 'dismiss_mode' => NoticeInterface::DISMISS_MODE_FRONTEND, ), $c); return $notice; }
이전 버전의 PHP에서는 문제없이 작동했습니다. 해결책이 뭘까요
여기 – PHP 문서를 참고로 보면 “선택적” 매개변수 (즉, “기본값이 있는” 매개변수) 뒤에 “필수” 매개변수(즉, “기본값이 설정되지 않은” 매개변수)를 갖는 것이 올바르지 않다고 설명되어 있는데, 그럼에도 불구하고 PHP 8.0 전까지는 단지 느슨이 허용됬을 뿐.
즉 이경우에는
public function _createSettingsImportSuccessNotice(ContainerInterface $c, $p = null, $config) // ^^ $c & $config => 서명에 기본값이 설정되지 않은 필수 매개변수, ^^ $p => 선택적 매개 변수
그럼으로 $p 변수의 값을 간단히 제거하고
public function _createSettingsImportSuccessNotice(ContainerInterface $c, $p, $config) { ...
이렇게 테스트해보시죠.
댓글 9월 6, 2022

로그인 후에 참여가 가능합니다. 로그인하시거나 아직 회원등록 안 하셨으면 간단하게 회원 가입하세요.
여기 제시하신 솔루션으로 ($p 초기값 제거) 해결 되었습니다!!! 감사드립니다