글쓴사람 관리자
글쓴시간2003년 4월 14일 오후 6시 12분 38초
    제목[알림][업데이트] 1.4.1
Template_ 1.4.1

기훈님의 원래제안대로 수정했고($를 뺐습니다) 행인님 제안에 따른 기능을 하나 더 추가했습니다.

1.4.x 에 추가된 기능들은 엄밀히 말해서 코드분리라는 원칙을 위반한 내용들입니다.

$flexible 이라는 템플릿 속성이 true 일 때 1.4.x 에 추가된 기능을 사용할 수 있고

기본값은 true 입니다.


차근 차근 읽어보시면 어렵지 않은 내용입니다.


[1]

1.4.0 에 추가된 기능을 한 마디로 말하면 "assign() 안하기" 라고 할 수 있습니다.

assign()을 안해도 되는 변수에는, PHP 예약변수(predefined variables) 와

전역변수(배열포함, 함수나 메소드 바깥에 있는 변수)가 있으며,

루프변수는 전역변수이더라도 루프메서드로 할당해주어야 합니다.

(1-1)

PHP예약변수에는

$_SERVER, $_ENV, $_COOKIE, $_GET, $_POST, $_FILES, $_REQUEST, $_SESSION

등이 있으며, 이들은 assign() 을 하지 않고

아래와 같이 템플릿파일에 작성하는 것만으로 동작합니다.

{_SESSION['sss']}

{? _GET['abc'] + _POST["xyz"] - 123} ... {/}


(1-2)

템플릿변수이름의 첫 문자로 언더바(_)를 쓰면, 전역변수임을 의미하고,

이 변수에는 assign()이 필요없습니다.

아래의 예에서 템플릿 변수 _var 는 전역변수 $var의 값을 받아옵니다.

{ abc + _var }

(언더바를 템플릿변수이름 첫문자로 사용하셨다면 양해를 구합니다.)


[2]

명령어 '::' 가 추가되었습니다. {:: expression}

용도는.. 표현식(expression)의 값을 출력하지 않고 아래와 같이

템플릿파일내의 php코드로 리턴합니다.

<?php echo substr( {:: abc}, 0, 5);?>

쇼트태그가 허용되어 있다면, 간단히

<?=substr({::abc},0,5)?>

하면 되겠습니다.

이렇게 한 이유는, 템플릿 태그내에서 함수를 지원하려면

PHP문법을 따르든 자바스크립트문법을 따르든

함수 하나하나마다 PHP 코드로 전환해주는 정규식을 작성해야 돼서

템플릿언더바의 부피가 커지게 되고,

또한 어떤 함수가 자주쓰이는 함수인지 기준을 찾기가 어렵기 때문입니다.


그리고 명령어 선택하기가 어려웠는데, 좀 더 좋은 명령어가 있으면 제안해 주시길 바라고,,


일단 다운로드페이지에는 올리지 않았습니다.

기타 다른 의견이 있다면 말씀해 주시기 바랍니다.


제안해주신, 기훈님 행인님께 감사드립니다.
기훈 우와~ 템플릿 파일 내부에서도 php소스가 파싱되는군요
이런 괴물을 만들어 내시다니 대단하십니다.
제가 프로그램을 하면서 이런괴물을 늘 생각했었는데 실력부족으로 쿨럭 ㅜㅡ
그런데 말만하면 뚝딱뚝딱 너무 쉽게 해결해내시는 님이
존경스럽기까지 하네요
03-04-14 18:49
기훈 _GET['abc'] 에서 _GET[abc]는 불가능인가요?
03-04-14 18:57
관리자 기훈님 감사합니다.
가능은 하지만, 따옴표가 없으면, 변수라는 의미이기 때문에, 혼란을 줄 것 같습니다. 그렇겠죠?
03-04-14 19:02
관리자 만일 배열키로 변수나 표현식을 지원하자는 제안이라면.. 답변은 불가능인거 같습니다.
03-04-14 19:04
이준성 정말 수고하셨습니다. 날로 발전해나가는 Template_를 보면 천군만마를 얻은듯한 기분이 드네요...^^
03-04-14 19:10
기훈 네~ ^^
좋은 프로그램 감사드립니다 ^^
03-04-14 19:10
이준성 많은 기능도 중요하지만 빠른 템플릿이라는 기본은 흔들리지 마시길 ....^^
03-04-14 19:12
기훈 제 나름데로의 테스트로는 속도는 별반 차이없는거 같았습니다. 관리자님께서 벤치마킹을 템플릿 언더바 버전별로 한번해보는것이...
03-04-14 19:25
관리자 말씀드릴 필요가 있을 거 같네요.. {::   }이 변환되면.. 별도의 메서드를 매개로 해서 리턴하는 게 아니고 저자리에 그냥 PHP변수나 표현식을 넣은 것과 같은 모양이 됩니다.
라인수가 그다지 늘지 않았고.. 다른 처리속도상의 변화는 없습니다. 그리고,, 벤치마크 페이지의 1-2 테스트에서 "전역변수 assign() 안하기"로 하면 30%정도 속도향상이 있었습니다. 벤치마크 페이지도 업데이트 해야겠네요.
03-04-14 19:34
곰돌이푸우 컥... 공부할꺼 많네 ㅠㅠ 아고... 머리야
03-04-14 20:27
곰돌이푸우 루프변수는 전역변수이더라도 루프메서드로 할당해주어야 합니다.  ㅡㅡㅋ 무슨 말이지 ㅠㅠ
03-04-14 22:15
관리자 다른 의견 없으시면 설명서 업데이트할 때 다운로드페이지로 옮기도록 하겠습니다.
03-04-15 23:15
    이름
비밀번호
 
Since 2003-03-03 hosted on vultr.com