글쓴사람 지우개
글쓴시간2023년 5월 5일 오후 7시 2분 20초
    제목변수에 하이픈 (-) 시 오류
-- layout.php

$var = [
   'header_title' => 'this is header file',
];

echo Tpl::get( 'layout.html' , [
    'var' => $var,
    'header' =>'header.html',
]);


-- header.html

HEADER - [=exVar.header_title]


-- layout.html

<div>[=this.fetch(header)]</div>


----------

위처럼 layout.html 안에 header.html 를 불러 넣는 방식으로 하려는데
$var['header_title'] 변수명을 'header-title' 로 바꾸면 값이 제대로 출력되지 않습니다. ('0' 으로 표기)
위 보기처럼 'header_title' 로 하면 잘 됩니다.

버그일까요? 올바른 동작일까요?
관리자 [=var.header-title] 로 하면 - 가 하이픈이 아니라 마이너스가 되어 그렇습니다.

[=var['header-title']] 로 하면 됩니다.

올바르다기 보다 일반적인 네이밍규칙을 따르는 것이라 버그는 아닌 거 같네요.
23-05-05 20:33
지우개 답변 감사합니다.

변수는 그렇게 쓰면 되는데 fetch 등에는 어떻게 사용해야할가요?

<div>[=this.fetch(left-header)]</div>

역시 동작을 하지 않네요. left_header 는 되는데요.
23-05-05 22:41
관리자 left-header << 하이픈을 변수명으로 받아 주는 언어가 있나요?
23-05-06 06:12
관리자 CSS 처럼 left-header 로 하면 좋을거 같긴한데 방법이 없네요.
23-05-06 22:27
관리자 마이너스 연산을 하려면 - 앞에 공백이 있어야 한다 << 이런 조건을 붙여서 구현가능하긴 한데 다른 상황에서는 헷갈릴 수 있을 거 같고 고민을 해봐야 겠어요
23-05-06 22:48
관리자 개발자들이 대게 연산자 앞뒤에 공백을 붙이니까 지원이 가능할 거 같습니다. 좀 더 생각해보고 다음 업데이트 때 반영하는 쪽으로 하겠습니다. 다른 의견 있으면 주시구요.
23-05-07 00:06
지우개 단순히 변수명을 left-header 로 사용하는 경우는 조금 비정상적으로 보일 수도 있는데

$tpl['left-header'] = "left-header.html";

식으로 사용할 때 this.fetch(left-header) 라고 표기된늑서이 문제가 되는거 같습니다.
this.fetch('left-header') 같이 처리할 수 있다면 그것도 상관없을 것 같은데 네이밍규칙에 관한것이라 좀더 범용적인 원칙이 되도록 정하는 게 좋을 것 같긴합니다.
23-05-08 01:06
관리자 저도 한대 얻어 맞은 기분인데.. 스네이크 케이스 left_header 캐멀 케이스 leftHeader 파스칼 케이스 LeftHeader 전통적으로 세 가지 네이밍 규칙이 있는데 이게 다 하이픈을 못 써서 나온 거에요. left-header 는 CSS 케이스 혹은 URI 케이스라고 하면 되려나. average = total / count; 이렇게 코딩하지 average=total/count 이렇게 붙여서 코딩하는 개발자 1도 없습니다. 바이트가 아까운 60년대도 아니고 CSS 케이스 지원가능해요.
23-05-08 10:51
베르사체 하이픈은 변수명으로 받아주지 않는 게 바람직하다고 생각합니다. 코테이션 마크를 써서 가능하니 그대로 유지하면 좋을 듯 싶습니다.
23-06-22 16:35
관리자 가능은 해서 꽤 고민을 했는데 코딩관례에서 좀 많이 벗어난 거 같습니다.
검토해주셔서 감사합니다.
23-06-30 03:55
    이름
비밀번호
 
Since 2003-03-03 hosted on vultr.com