커뮤니티

CMS/프레임워크 Rhymix 2.1
개발 언어 PHP 8.4

안녕하세요

 

v2 스킨을 작성중인데 아래와 같이 스킨에서 사용자정의함수를 작성하면

@verbatim

@php

function val_sort($a, $b){

    if ($a->order_group === $b->order_group) {

        return $a->order_idx <=> $b->order_idx;

    }

    return $a->order_group <=> $b->order_group;

}

@endphp

@endverbatim

 

 

캐시파일에서는 아래처럼 변경됩니다.

<?php

function val_sort($__Context->a, $__Context->b){

    if ($__Context->a->order_group === $__Context->b->order_group) {

        return $__Context->a->order_idx <=> $__Context->b->order_idx;

    }

    return $__Context->a->order_group <=> $__Context->b->order_group;

}

?>

 

 

이때 캐시파일의 매개변수가 객체로 바뀌어서 오류가 나는데요. 해결 방법이 있을까요?

ehii Lv. 2

댓글 5

  • 2025.07.30 14:05 #1913003

    달러 기호를 이스케이프해 주셔야 합니다.

    function val_sort(\$a, \$b) { ...

     

    해당 내용을 그대로 출력하려는 것이 아니기 때문에 @verbatim은 필요없습니다만,

    @verbatim의 의미를 확장해서 PHP 변수도 변환하지 않도록 한다면 편리하지 않을까 하는 생각도 드네요.

  • 2025.07.30 14:53 #1913009

    감사합니다!

  • 2025.08.18 23:08 #1915253

    verbatim 패치 감사합니다.

  • 2025.08.19 00:11 #1915257

    원글의 예시처럼 함수 선언은 상관없겠지만,

    @php + @verbatim 안에서 변수를 선언하면 Context가 아닌 로컬 변수가 되어서

    해당 템플릿의 다른 부분에서는 참조할 수 없게 되는 점 주의 바랍니다.^^

  • 2025.08.19 00:30 #1915262

    네. 주의사항까지 알려주셔서 감사합니다.!