[레거시코드] 라이믹스 romanesque 블로그 스킨 레거시 코드 수정방법
2023.06.23 20:12
0
https://eond.com/456955

Fatal error: Unparenthesized `a ? b : c ? d : e` is not supported. Use either `(a ? b : c) ? d : e` or `a ? b : (c ? d : e)` in /var/www/vhosts/eond.com/httpdocs/files/cache/template/modules/board/skins/romanesque_blog/skin.display.html.php on line 72


PHP 7.4부터 삼항 연산자의 연관성(associativity)이 변경되었습니다. 즉, PHP 7.4 이전에는 다음과 같은 삼항 연산자 체인이 왼쪽에서 오른쪽으로 연산되었습니다:

php
$a ? $b : $c ? $d : $e // 이전에는 ($a ? $b : $c) ? $d : $e 로 간주되었습니다.

그러나 PHP 7.4 이후에는 이러한 구문이 더 이상 허용되지 않습니다. 이것이 당신의 코드에서 발생한 오류 메시지입니다. 이제는 삼항 연산자 체인을 명시적으로 괄호로 묶어야 합니다:

php
($a ? $b : $c) ? $d : $e // 또는 $a ? $b : ($c ? $d : $e)

이러한 변경 사항은 삼항 연산자 체인의 예상치 못한 결과를 방지하기 위해 도입되었습니다. 삼항 연산자는 그 자체로 복잡하므로, 가능한 한 사용을 피하고, 필요한 경우에는 괄호를 사용하여 의도한 연산 순서를 명확하게 표현하는 것이 좋습니다.


# 로마네스크 블로그 스킨

## 버그내용
### 버그1
```log
Deprecated: Optional parameter $document_srl declared before required parameter $last_update is implicitly treated as a required parameter in /var/www/vhosts/eond.com/httpdocs/files/cache/template/modules/board/skins/romanesque_blog/php/common.php.php on line 556
Deprecated: Optional parameter $time_interval declared before required parameter $last_update is implicitly treated as a required parameter in /var/www/vhosts/eond.com/httpdocs/files/cache/template/modules/board/skins/romanesque_blog/php/common.php.php on line 556
Fatal error: Unparenthesized `a ? b : c ? d : e` is not supported. Use either `(a ? b : c) ? d : e` or `a ? b : (c ? d : e)` in /var/www/vhosts/eond.com/httpdocs/files/cache/template/modules/board/skins/romanesque_blog/skin.display.html.php on line 72
```
modules/board/skins/romanesque_blog/php/common.php.php on line 556
function printExtraImages($time_interval = 43200, $regdate, $last_update,$document_srl = null)
변수순서 변경함.

modules/board/skins/romanesque_blog/skin.display.html.php on line 72

수정된코드
```php
<li cond="Context::get('roBlogVars')->use_vote_up == 'Y'" class="ro-tool-col ro-tool-item ro-items-voteup ro-font-number ro-active {!$module_info->colorset && !$module_info->ro_voteup ? '' : ($module_info->colorset && !$module_info->ro_voteup ? 'ro-color-'.$module_info->colorset : 'ro-color-'.$module_info->ro_voteup)}"|cond="Context::get('roBlogVars')->is_vote_up == 'Y'" class="ro-tool-col ro-tool-item ro-items-voteup ro-font-number {!$module_info->colorset && !$module_info->ro_voteup ? '' : ($module_info->colorset && !$module_info->ro_voteup ? 'ro-color-'.$module_info->colorset : 'ro-color-'.$module_info->ro_voteup)}"|cond="!Context::get('roBlogVars')->is_vote_up" title="{$lang->ro_voteup}" data-document-target_srl="{$document->document_srl}" data-voteup="true"|cond="$document->get('voted_count')>0" cond="$document->get('voted_count')>0">
```

### 버그3
```
Fatal error: Unparenthesized `a ? b : c ? d : e` is not supported. Use either `(a ? b : c) ? d : e` or `a ? b : (c ? d : e)` in /var/www/vhosts/eond.com/httpdocs/files/cache/template/modules/board/skins/romanesque_blog/skin.article.html.php on line 35
```
원본코드
```
{(!$module_info->colorset&&!$module_info->ro_voteup)?'':($module_info->colorset&&!$module_info->ro_voteup)?'ro-color-'.$module_info->colorset:'ro-color-'.$module_info->ro_voteup}
```
수정된코드
```
{!$module_info->colorset && !$module_info->ro_voteup ? '' : ($module_info->colorset && !$module_info->ro_voteup ? 'ro-color-'.$module_info->colorset : 'ro-color-'.$module_info->ro_voteup)}
```

### 버그4
```
Fatal error: Unparenthesized `a ? b : c ? d : e` is not supported. Use either `(a ? b : c) ? d : e` or `a ? b : (c ? d : e)` in /var/www/vhosts/eond.com/httpdocs/files/cache/template/modules/board/skins/romanesque_blog/skin.comment.html.php on line 49
```
문제되는코드
```
class="ro-tool-col ro-tool-item ro-items-voteup ro-font-number ro-active {(!$module_info->colorset&&!$module_info->ro_voteup)?'':($module_info->colorset&&!$module_info->ro_voteup)?'ro-color-'.$module_info->colorset:'ro-color-'.$module_info->ro_voteup}"|cond="$comment->is_vote_up == 'Y'" 
                                        class="ro-tool-col ro-tool-item ro-items-voteup ro-font-number {(!$module_info->colorset&&!$module_info->ro_voteup)?'':($module_info->colorset&&!$module_info->ro_voteup)?'ro-color-'.$module_info->colorset:'ro-color-'.$module_info->ro_voteup}"|cond="!$comment->is_vote_up"
```  

버그5

Deprecated: Optional parameter $time_interval declared before required parameter $last_update is implicitly treated as a required parameter in /var/www/vhosts/eond.com/httpdocs/files/cache/template/modules/board/skins/romanesque_blog/php/common.php.php on line 553

이 경고는 함수에서 선택적 매개변수가 필수 매개변수 앞에 선언되었다는 것을 나타냅니다. 함수의 매개변수는 필수 매개변수가 앞에 오고 선택적 매개변수가 뒤에 와야 합니다. 


다시 말해, 선택적 매개변수(기본값이 있는 매개변수)는 필수 매개변수(기본값이 없는 매개변수) 뒤에 위치해야 합니다.


예를 들어, 현재 코드가 다음과 같다고 가정해봅시다:


```php

function myFunction($optionalParam = "default", $requiredParam) {

    // function body

}

```


위 코드에서 `$optionalParam`은 선택적 매개변수이며, `$requiredParam`은 필수 매개변수입니다. 이를 PHP의 규칙에 따라 재정렬해야 합니다:


```php

function myFunction($requiredParam, $optionalParam = "default") {

    // function body

}

```


따라서 당신의 `/var/www/vhosts/eond.com/httpdocs/files/cache/template/modules/board/skins/romanesque_blog/php/common.php.php` 파일의 553번째 줄에 있는 함수를 이와 같이 수정해야 할 것입니다.

function printExtraImages($regdate, $last_update,$time_interval = 43200,$document_srl = null)


이렇게 수정해줬습니다.

라이믹스는 이온디와 함께

닫기

마이페이지

로그인을 해주세요