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');