스킨 만드시는 분들은 참고하시면 도움될 사항입니다. 정보
제안 스킨 만드시는 분들은 참고하시면 도움될 사항입니다.본문
그누 g4 에서는 php4+ 에서부터 지원하는 히어닥 문법을 사용하고 있습니다.
스킨 제작자분들을 위해서, 주의사항을 알려드립니다.
-----------------------------------------------------------------------------------------
히어닥 문법
문자열을 구분하는 다른 방법은 히어닥 문법("<<<")을 사용하는것이다. <<<이후에 식별자가 와야 하고 그다음에 문자열, 그다음에 인용을 닫는 어떤 식별자가 와야 한다.
닫기 식별자는 그 줄의 첫번째 컬럼에서 시작되어야 한다. 또한, 식별자는 PHP의 다른 라벨과 같은 명명규칙을 따라야 한다: 오직 알파벳 숫자와 밑줄을 포함하고 숫자가 아닌 문자나 밑줄로 시작되어야 한다.
주의
닫기 식별자를 갖는 줄은 가능한 세미콜른(;)를 제외하고 다른 문자를 포함하지 않는다는것에 주의해야 한다. 이말은 특별히 식별자가 줄맞춤이 되지 않을 것이고 어떤 공백이나 탭문자도 세미콜른의 앞이나 뒤에 있지 않을것이란 것이다. 닫기 식별자 전의 첫 문자는 운영체제에서 정의된 새줄이 되어야 한다는 것을 인식해야 한다. 예를 들면 매킨토시에서는 \r이 된다.
이 규칙을 깨고 닫기 식별자가 "확실"하지 않으면, 닫기 식별자로 인식되지 않으며 PHP는 다른 식별자를 계속 찾게 될것이다. 그래서 적절한 닫기 식별자가 발견되지 않으면 스크립트 끝의 줄번호로 해석 에러가 출력될것이다.
히어닥 텍스트는 큰따옴표가 없지만 큰따옴표로 둘러싸인 문자열처럼 동작한다. 히어닥에서는 따옴표를 회피할 필요가 없다는 의미를 갖는다. 그러나 여전히 위에서 열거한 회피 코드를 사용할수 있다. 문자가 전개되면, 히어닥 안의 복합 변수를 문자열로 표현할때 같은 주의가 필요하다.
-----------------------------------------------------------------------------------------
* 현재 그누 g4 에서는 히어닥문법의 시작과 끝문자열을 HEREDOC 로 선언해서 쓰고 있으나, 사실상 별 의미는 없으며, 문자열 시작전에 <<<START 와 같이 선언하고, 닫기시에 START; 라고 선언해주면 됩니다..(열기/닫기 에 대한 문자열은 자유롭게 사용이 가능하다는 뜻입니다...)
주의할 건 히어닥문법 사용시 반드시 뒷 부분에 공백(탭포함)이 없어야 하며, 닫기는 라인의 첫 번째부터 시작되어야 합니다. 만약 그렇지 않을경우, 위 질문에서와 같이 라인의 끝($end) 에 파서오류를 출력합니다.
예를 들어 현재 g4 에서,
<<<HEREDOC 의 닫기인
HEREDOC; 여기에서 세미콜론(;) 뒤에 공백이나 탭, 기타 어떤 것도 들어가면 안됩니다.
특히 복사해서 붙여서 이용하시는 분들은 주의하셔야 합니다.
또한 반드시 라인의 시작부분에 선언해줘야 합니다.
HEREDOC; <- O
HEREDOC; <- X
스킨 제작자분들을 위해서, 주의사항을 알려드립니다.
-----------------------------------------------------------------------------------------
히어닥 문법
문자열을 구분하는 다른 방법은 히어닥 문법("<<<")을 사용하는것이다. <<<이후에 식별자가 와야 하고 그다음에 문자열, 그다음에 인용을 닫는 어떤 식별자가 와야 한다.
닫기 식별자는 그 줄의 첫번째 컬럼에서 시작되어야 한다. 또한, 식별자는 PHP의 다른 라벨과 같은 명명규칙을 따라야 한다: 오직 알파벳 숫자와 밑줄을 포함하고 숫자가 아닌 문자나 밑줄로 시작되어야 한다.
주의
닫기 식별자를 갖는 줄은 가능한 세미콜른(;)를 제외하고 다른 문자를 포함하지 않는다는것에 주의해야 한다. 이말은 특별히 식별자가 줄맞춤이 되지 않을 것이고 어떤 공백이나 탭문자도 세미콜른의 앞이나 뒤에 있지 않을것이란 것이다. 닫기 식별자 전의 첫 문자는 운영체제에서 정의된 새줄이 되어야 한다는 것을 인식해야 한다. 예를 들면 매킨토시에서는 \r이 된다.
이 규칙을 깨고 닫기 식별자가 "확실"하지 않으면, 닫기 식별자로 인식되지 않으며 PHP는 다른 식별자를 계속 찾게 될것이다. 그래서 적절한 닫기 식별자가 발견되지 않으면 스크립트 끝의 줄번호로 해석 에러가 출력될것이다.
히어닥 텍스트는 큰따옴표가 없지만 큰따옴표로 둘러싸인 문자열처럼 동작한다. 히어닥에서는 따옴표를 회피할 필요가 없다는 의미를 갖는다. 그러나 여전히 위에서 열거한 회피 코드를 사용할수 있다. 문자가 전개되면, 히어닥 안의 복합 변수를 문자열로 표현할때 같은 주의가 필요하다.
-----------------------------------------------------------------------------------------
* 현재 그누 g4 에서는 히어닥문법의 시작과 끝문자열을 HEREDOC 로 선언해서 쓰고 있으나, 사실상 별 의미는 없으며, 문자열 시작전에 <<<START 와 같이 선언하고, 닫기시에 START; 라고 선언해주면 됩니다..(열기/닫기 에 대한 문자열은 자유롭게 사용이 가능하다는 뜻입니다...)
주의할 건 히어닥문법 사용시 반드시 뒷 부분에 공백(탭포함)이 없어야 하며, 닫기는 라인의 첫 번째부터 시작되어야 합니다. 만약 그렇지 않을경우, 위 질문에서와 같이 라인의 끝($end) 에 파서오류를 출력합니다.
예를 들어 현재 g4 에서,
<<<HEREDOC 의 닫기인
HEREDOC; 여기에서 세미콜론(;) 뒤에 공백이나 탭, 기타 어떤 것도 들어가면 안됩니다.
특히 복사해서 붙여서 이용하시는 분들은 주의하셔야 합니다.
또한 반드시 라인의 시작부분에 선언해줘야 합니다.
HEREDOC; <- O
HEREDOC; <- X
댓글 전체
' 혹은 " 이 들어가면 에러가 발생하는 원인이 바로 이거인가요? 잘모르겠슴...ㅠㅠ
웃기는게... 제가 타이핑쳐서 echo <<<HEREDOC... HEREDOC; 하면 에러나고,
그누소스에서 카피해서 붙여놓으면 실행되네요.
누구 말씀처럼, 프로그래머가 아닌 프로짜지퍼의 길을 걸어야 할런지...
그누소스에서 카피해서 붙여놓으면 실행되네요.
누구 말씀처럼, 프로그래머가 아닌 프로짜지퍼의 길을 걸어야 할런지...
웹에디터 많이 쓰는 사람은 편하겠군여...
간단하게 /gnuboard4/bbs/scrap.php 82 ~ 90라인 소스코드를 기재해 보겠습니다.
echo <<<HEREDOC
<tr height=25 bgcolor="#F6F6F6" align="center">
<td height="24"><font class="mystyle">{$num}</font></td>
<td><a href="javascript:;" onclick="opener.document.location.href='./board.php?bo_table=$row[bo_table]';"><font class="mystyle">$row2[bo_subject]</font></a></td>
<td align="left"><a href="javascript:;" onclick="opener.document.location.href='./board.php?bo_table=$row[bo_table]&wr_id=$row[wr_id]';"><font class="mystyle">$row3[wr_subject]</font></a></td>
<td><font class="mystyle">$row[ms_datetime]</font></td>
<td><a href="javascript:del('./scrap_delete.php?ms_id=$row[ms_id]&page=$page');"><img src="img/btn_comment_delete.gif" width="45" height="14" border="0"></a></td>
</tr>
HEREDOC;
1. 소스코드 도입부에서 echo문에 <<<HEREDOC 으로 지정하고 최하단 소스코드에 HEREDOC; 으로 종결.
(즉, <<< 로 시작해서 종료하기 직전까지의 루틴(?!)을 HEREDOC으로 선언(?!)하고, 선언된 루틴을 종결하기
위해서 다시 한번 HEREDOC을 사용하고, 공백을 포함하지 않은 상태에서 PHP 구문의 종결을 나타내는
;(세미콜론)을 기재.
2. 소스코드 상단부에서 번호를 찍어주는 변수는 다음과 같이 중괄호{ }로 묶어 줌.
{$num}
3. php구문 내에서 javascript, 따옴표(", ')등의 사용이 자유로운 편임.(일반적인 html을 기재하듯 사용).
4. 결론은 HEREDOC이라고 정의된 부분을 임의로 변경하시거나(단, 시작과 종결은 일치시켜야 함.),
이전에 사용하던 방식처럼 echo문으로 감싸던가, 특정 루틴을 php구문과 html처리 부분으로
조각 조각 나눠서 기재하셔도 상관 없습니다.
(개인적으로는 어느 정도 이해가 되서 엄청나게 편해 보이는 방식이라고 생각합니다 ~*^^*)
echo <<<HEREDOC
<tr height=25 bgcolor="#F6F6F6" align="center">
<td height="24"><font class="mystyle">{$num}</font></td>
<td><a href="javascript:;" onclick="opener.document.location.href='./board.php?bo_table=$row[bo_table]';"><font class="mystyle">$row2[bo_subject]</font></a></td>
<td align="left"><a href="javascript:;" onclick="opener.document.location.href='./board.php?bo_table=$row[bo_table]&wr_id=$row[wr_id]';"><font class="mystyle">$row3[wr_subject]</font></a></td>
<td><font class="mystyle">$row[ms_datetime]</font></td>
<td><a href="javascript:del('./scrap_delete.php?ms_id=$row[ms_id]&page=$page');"><img src="img/btn_comment_delete.gif" width="45" height="14" border="0"></a></td>
</tr>
HEREDOC;
1. 소스코드 도입부에서 echo문에 <<<HEREDOC 으로 지정하고 최하단 소스코드에 HEREDOC; 으로 종결.
(즉, <<< 로 시작해서 종료하기 직전까지의 루틴(?!)을 HEREDOC으로 선언(?!)하고, 선언된 루틴을 종결하기
위해서 다시 한번 HEREDOC을 사용하고, 공백을 포함하지 않은 상태에서 PHP 구문의 종결을 나타내는
;(세미콜론)을 기재.
2. 소스코드 상단부에서 번호를 찍어주는 변수는 다음과 같이 중괄호{ }로 묶어 줌.
{$num}
3. php구문 내에서 javascript, 따옴표(", ')등의 사용이 자유로운 편임.(일반적인 html을 기재하듯 사용).
4. 결론은 HEREDOC이라고 정의된 부분을 임의로 변경하시거나(단, 시작과 종결은 일치시켜야 함.),
이전에 사용하던 방식처럼 echo문으로 감싸던가, 특정 루틴을 php구문과 html처리 부분으로
조각 조각 나눠서 기재하셔도 상관 없습니다.
(개인적으로는 어느 정도 이해가 되서 엄청나게 편해 보이는 방식이라고 생각합니다 ~*^^*)

어려워서 무슨 말인지 도저히 모르겠습니다.
결론은 히어닥인가 머시기를 없애도 된다는 얘기인가요?
결론은 히어닥인가 머시기를 없애도 된다는 얘기인가요?

음 까만건 글자..
모르겠음.. --;;
[PHP] assign a variable about quotes
객체지향언어에서 많이 쓰이는 방식으로 클래스화 시킨것? 이라고 보시면됩니다.
변수선언 하는 방법에 있어서 문자열의 쿼터(""&'')삽입시 큰어려움 없이 쓰는 방법은 이렇게 쓰시면 좋습니다:
Another way to assign a variable a large amount text without having to worry about quotes getting in the way is like so:
$aVariable = <<<END
"HEY!"
END;
print "$aVariable";
output: "HEY!"
다음의 경우에는 에러를 표시할것입니다:
Where as this is will produce an error:
$aVariable = ""HEY!"";
by http://kr.php.net/manual/kr/language.variables.php#language.variables.basics
객체지향언어에서 많이 쓰이는 방식으로 클래스화 시킨것? 이라고 보시면됩니다.
변수선언 하는 방법에 있어서 문자열의 쿼터(""&'')삽입시 큰어려움 없이 쓰는 방법은 이렇게 쓰시면 좋습니다:
Another way to assign a variable a large amount text without having to worry about quotes getting in the way is like so:
$aVariable = <<<END
"HEY!"
END;
print "$aVariable";
output: "HEY!"
다음의 경우에는 에러를 표시할것입니다:
Where as this is will produce an error:
$aVariable = ""HEY!"";
by http://kr.php.net/manual/kr/language.variables.php#language.variables.basics

처음 써먹어 보는건데.. 덕분에, 좋은 공부 됐습니다.
감사합니다.
감사합니다.
흐음... 이거 모르고도 당하고, 알고도 당하게 생겼네요.
아파치에서 도메인 세팅할 때도, 탭으로 해야하는걸 스페이스바로 처리해서
몇일간 해맨 적이 있었는데, 이런 사소한 것 같으면서도 발견하기 힘든
것들이 종종 있더라구요. 좋은 내용 감사합니다.
아파치에서 도메인 세팅할 때도, 탭으로 해야하는걸 스페이스바로 처리해서
몇일간 해맨 적이 있었는데, 이런 사소한 것 같으면서도 발견하기 힘든
것들이 종종 있더라구요. 좋은 내용 감사합니다.
아, 참고로 한가지 더 있습니다.
히어닥문법내에서의 php 변수는 반드시 중괄호({}) 로 감싸줘야 합니다.
히어닥문법내에서의 php 변수는 반드시 중괄호({}) 로 감싸줘야 합니다.
감사합니다.
소스코드 보고 해당 구문이 약간은 간략하게 구성되었다(?!)라고 생각했었는데,
말씀해 주신 부분도 반드시 체크해야 될 것 같네요^^;
소스코드 보고 해당 구문이 약간은 간략하게 구성되었다(?!)라고 생각했었는데,
말씀해 주신 부분도 반드시 체크해야 될 것 같네요^^;
....