이온디
호스팅센터
웹디벨로퍼
프리랜서카페
스레드
<script>
    function switchUser(member_srl)
    {
        $.exec_json('changeuser.procChangeuserSwitch', {member_srl: member_srl}, function(data) {
            location.reload();
        });
    }
</script>

PHP8 이상에서의 오류 


Fatal error: Cannot use positional argument after named argument in /Users/eond/PhpstormProjects/eond/files/cache/template/layouts/el_imin/assets/pages/layout.blade.php.compiled.php on line 88



해당 오류 메시지는 **"위치 인수(positional argument) 이후에 명명된 인수(named argument)를 사용할 수 없다"**는 의미입니다.

🔍 원인 분석

$.exec_json 함수가 호출될 때, JavaScript 코드에서 member_srl을 객체 형태로 넘겨주고 있습니다. 하지만 서버 측 PHP 코드에서 changeuser.procChangeuserSwitch 핸들러가 처리할 때, PHP 8 이상에서는 위치 인수 뒤에 명명된 인수를 사용할 수 없다는 제약이 있습니다.

즉, changeuser.procChangeuserSwitch 함수 내부에서 다음과 같은 코드가 있을 가능성이 큽니다.

php복사편집function procChangeuserSwitch($arg1, $key1 = 'default', $key2 = 'default') { ... }

이런 함수에 대해:

php복사편집procChangeuserSwitch('value1', key1: 'value2', key2: 'value3'); 

이렇게 호출하면 PHP 8 이상에서 오류가 발생합니다.

🛠 해결 방법

1. 위치 인수(positional arguments)만 사용

만약 changeuser.procChangeuserSwitch 함수가 내부적으로 위치 인수와 명명된 인수를 혼합하여 사용하고 있다면, 위치 인수만 사용하도록 수정하세요.

php복사편집procChangeuserSwitch('value1', 'value2', 'value3'); 

2. 모든 인수를 명명된(named arguments) 형식으로 변경

모든 인수를 명명된 인수로 사용하면 문제를 해결할 수도 있습니다.

php복사편집procChangeuserSwitch(arg1: 'value1', key1: 'value2', key2: 'value3');

3. JavaScript에서 전송하는 데이터 확인

현재 $.exec_json 호출 부분이 다음과 같습니다.

js복사편집$.exec_json('changeuser.procChangeuserSwitch', {member_srl: member_srl}, function(data) {
    location.reload();
});

서버에서 procChangeuserSwitch 함수가 이 데이터를 처리할 때, 인수를 어떻게 받는지 확인해야 합니다.
member_srl이 PHP 함수에서 어떻게 처리되는지 확인하고, 호출 방식을 위 방식 중 하나로 변경하세요.


만약 PHP 코드 일부를 보여줄 수 있다면, 보다 정확한 해결 방법을 안내해 줄 수 있습니다! 🚀

 


내용을 입력하세요
0
댓글은 로그인 사용자만 작성 가능합니다. 로그인하기