글쓴사람 xpa
글쓴시간2025년 6월 18일 오전 3시 36분 45초
    제목템플릿 언더바 스코프 문의
안녕하세요 템플릿 언더바 문의드립니다.


function print_($fid, $scope = '', $sub = false)
...
            if ( isset($this->var_[$fid]) )
            {
                $scope = $fid;
            }

이런 구문이 있는데
setscope에 의해서 scope변수가 여러번 지정되고.
fid와 scope변수중 하나가 일치하는 경우
print_로 배열 scope가 넘어왔지만
$this->var[$fid]가 존재하기때문에
$scope = $fid;를 해버려서
원래 넘겨야할 스코프 배열이 fid로 교체되어 버리는데요
체크해봐야할것이 있을까요?
관리자 xpa 님 안녕하세요..

템플릿언더바 2.2.8 에서 스코프 기능을 정상화했던 기억은 나는데

말씀하신

if (isset($this->var_[$fid]))
{
   $scope = $fid;
}

이 부분은 $fid 를 스코프 키로 쓰겠다는 것을 명시한 것 뿐이고
$scope 변수가 따로 기능하는 것은 없습니다.

충분한 테스트를 거쳐 답변 드리지 못하는 점 양해바라고

템플릿언더바의 스코핑은 템플릿모듈화를 절차적 형태로 구현한 방식으로, 사용을 권장하지 않습니다.
서브템플릿과의 변수 충돌을 방지하고자 할 때

$subTpl = new Template_();
$subTpl->assign(......);
$content = $subTpl->xfetch('news.html');


$layout = new Template_();
$layout->assign(.......);
$layout->assign('content', $content);
echo $tpl->xfetch('layout.html');

이런 식으로 하는 편이 낫다고 생각되며


신규프로젝트라면 API가 간소하고 쉬운 Tplus 를 권장합니다.
25-06-18 04:50
    이름
비밀번호
 
Since 2003-03-03 hosted on vultr.com