맨위로가기

트위그 (템플릿 엔진)

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

트위그는 복잡한 제어 흐름, 자동 이스케이핑, 템플릿 상속, 변수 필터, 국제화 지원, 매크로 기능을 제공하며 확장 가능한 템플릿 엔진이다. 다양한 통합 개발 환경(IDE)과 텍스트 편집기를 지원하며, 세 종류의 구분자를 사용하여 변수 출력, 주석, 명령문 실행을 수행한다. 또한, 연산자 우선순위와 특수 변수를 제공하며, if 문, for 루프와 같은 구문을 사용할 수 있다.

더 읽어볼만한 페이지

  • PHP 소프트웨어 - 핵 (프로그래밍 언어)
    Hack은 페이스북에서 개발한 프로그래밍 언어이며, PHP와 상호 운용되도록 설계되었고, 정적 타이핑을 도입하여 타입 힌트를 확장하며 PHP 7에도 영향을 미쳤다.
  • PHP 소프트웨어 - HHVM
    HHVM은 페이스북에서 개발한 PHP 및 Hack 언어 실행 엔진으로, JIT 컴파일을 통해 높은 성능을 제공하며 웹 개발 분야에 새로운 가능성을 제시했다.
  • 공식 웹사이트에 알 수 없는 변수를 사용한 문서 - 브루클린 미술관
    브루클린 미술관은 1823년 브루클린 견습생 도서관으로 시작하여 현재 약 50만 점의 소장품을 보유한 뉴욕 브루클린 소재의 미술관으로, 다양한 분야의 예술 작품을 전시하며 특히 아프리카 미술과 여성주의 미술에 대한 기여가 크다.
  • 공식 웹사이트에 알 수 없는 변수를 사용한 문서 - 광주지방기상청
    광주지방기상청은 광주광역시와 전라남도 지역의 기상 예보, 특보, 관측, 기후 정보 제공 등의 업무를 수행하는 기상청 소속 기관으로, 1949년 광주측후소로 설치되어 1992년 광주지방기상청으로 개편되었으며, 기획운영과, 예보과, 관측과, 기후서비스과와 전주기상지청, 목포기상대를 두고 있다.
트위그 (템플릿 엔진) - [IT 관련 정보]에 관한 문서
기본 정보
트위그 로고
트위그 로고
개발자Symfony SAS
최초 릴리스2009년 10월 12일
최신 릴리스 버전3.3.4
최신 릴리스 날짜2021년 11월 25일
상태활성
프로그래밍 언어PHP
운영 체제크로스 플랫폼
장르템플릿 엔진
라이선스BSD 라이선스
웹사이트트위그 공식 웹사이트
개발
작성자Armin Ronacher, Fabien Potencier

2. 특징

트위그는 웹 개발의 생산성과 유지보수성을 높이는 데 유용한 여러 특징을 제공한다.[12][13] 주요 특징은 다음과 같다.


  • 복잡한 제어 흐름
  • 자동 HTML 이스케이프
  • 템플릿 상속
  • 변수 필터[5]
  • i18n 지원 (gettext)
  • 매크로
  • 완전한 확장 가능성[2][6]

2. 1. 기본 기능

트위그의 주요 특징은 다음과 같다.[12][13]

  • 복잡한 제어 흐름
  • 자동 HTML 이스케이프: 출력되는 변수 값에 포함된 HTML 특수 문자를 자동으로 이스케이프 처리하여 크로스 사이트 스크립팅(XSS) 공격을 방지한다.
  • 템플릿 상속: 기본 템플릿 구조를 정의하고, 다른 템플릿에서 이를 상속받아 특정 블록만 재정의할 수 있다.
  • 변수 필터: 변수 값을 출력하기 전에 특정 형식으로 변환하거나 조작할 수 있는 기능을 제공한다.[5]
  • i18n 지원: gettext와 같은 도구를 사용하여 다국어 지원을 용이하게 한다.
  • 매크로: 자주 사용되는 HTML 조각이나 로직을 재사용 가능한 매크로로 정의할 수 있다.
  • 완전한 확장 가능성: 사용자 정의 태그, 필터, 함수, 연산자 등을 추가하여 트위그의 기능을 확장할 수 있다.[2][6]


트위그는 세 종류의 구분자를 정의한다.

  • ``: 변수의 내용이나 표현식의 평가 결과를 출력하는 데 사용한다. (예: 상속된 트위그 템플릿에서 `` 사용)
  • `{# ... #}`: 템플릿에 주석을 추가하는 데 사용한다. 이 주석은 렌더링된 페이지에는 포함되지 않는다.
  • `{% ... %}`: `for` 루프, `if` 문과 같은 제어 구조나 명령문을 실행하는 데 사용한다.
  • `{% set foo = 'bar' %}`: 변수를 할당하는 데 사용한다.[7]
  • `{% if i is defined and i == 1 %} ... {% endif %}`: 조건문이다.
  • `{% for i in 0..10 %} ... {% endfor %}`: 반복문이다.


아포스트로피(`'`)는 문자열 리터럴을 감싸는 데 사용될 수 있으며, 이스케이프 문자는 백슬래시(`\`)이다.

배열(리스트)은 다음과 같이 생성한다.

```twig

{% set myArray = [1, 2] %}

```

연관 배열(맵 또는 딕셔너리)은 다음과 같이 생성한다.

```twig

{% set myArray = {'key': 'value'} %}

```

다음은 트위그의 기본적인 기능 사용 예시이다. 이 코드는 `base.html` 템플릿을 상속받아 `navigation` 블록을 재정의하며, `navigation` 배열 변수를 순회하면서 링크 목록을 생성한다. `item.caption`에 `upper` 필터를 적용하여 대문자로 변환하고, `item.level`이 2일 경우 들여쓰기를 추가한다.

```twig

{% extends "base.html" %}

{% block navigation %}



{% endblock navigation %}

```

연산자 우선순위는 다음과 같으며, 우선순위가 낮은 것부터 높은 순서로 나열된다.[2]

연산자역할
`b-and`비트 AND
`b-xor`비트 XOR
`b-or`비트 OR
`or`논리 OR
`and`논리 AND
`==`같음
`!=`다름
`<`작음
`>`
`>=`크거나 같음
`<=`작거나 같음
`in`포함 여부 확인 (배열, 문자열, 객체 등)
`matches`정규 표현식 일치 확인
`starts with`문자열 시작 확인
`ends with`문자열 종료 확인
`..`시퀀스(범위) 생성 (예: `1..5`는 1, 2, 3, 4, 5를 포함하는 시퀀스)
`+`덧셈
`-`뺄셈
`~`문자열 연결
`*`곱셈
`/`나눗셈
`//`정수 나눗셈 (몫)
`%`나머지
`is`테스트 실행 (예: `is defined`, `is not empty`, `is divisible by(3)`)
`**`거듭제곱
`필터 적용[5]
`[]`배열 또는 객체 요소 접근
`.`객체의 속성 또는 메서드 접근 (예: `country.name`)



필터는 파이프 기호(`|`) 뒤에 배치되어, 앞선 표현식의 결과를 처리하는 기능을 제공한다. 예를 들어 다음과 같은 내장 필터들이 있다.[5]


  • `capitalize`: 문자열의 첫 글자만 대문자로 변경한다.
  • `upper`: 전체 문자열을 대문자로 변경한다.
  • `first`: 시퀀스(배열, 문자열 등)의 첫 번째 요소를 반환한다.
  • `length`: 시퀀스나 객체의 크기(길이 또는 개수)를 반환한다.


`for` 루프 내에서는 `loop`라는 특별 변수를 사용할 수 있다. 이 변수는 현재 루프 상태에 대한 정보를 담고 있다. 예를 들어 `loop.index`는 현재 반복 횟수(1부터 시작), `loop.index0`는 0부터 시작하는 인덱스, `loop.first`는 첫 번째 반복인지 여부, `loop.last`는 마지막 반복인지 여부를 나타낸다.

전역적으로 접근 가능한 변수도 있다. 예를 들어, 심포니 프레임워크와 함께 사용할 경우 `app` 변수를 통해 요청(`request`), 세션(`session`), 사용자(`user`) 등 다양한 정보에 접근할 수 있다.

  • 현재 요청 URL의 라우트 이름: `app.request.attributes.get('_route')`
  • 현재 템플릿 파일 이름: `_self`
  • 페이지 경로 생성: ``
  • CGI 환경 변수 접근: ``


트위그는 다양한 통합 개발 환경(IDE)과 텍스트 편집기에서 구문 강조, 자동 완성 등의 기능을 지원한다.[2]

종류이름지원 방식
통합 개발 환경 (IDE)이클립스Twig 플러그인
코모도 및 코모도 편집Twig 하이라이트/구문 검사 모드
넷빈즈Twig 구문 플러그인 (7.1 버전까지), 7.2 버전부터 기본 지원
PhpStorm2.1 버전부터 기본 지원
IntelliJ IDEA (WebStorm 포함)플러그인
Visual Studio CodeTwig Language 2, Twig Pack 등 확장 기능
텍스트 편집기AtomPHP-twig for atom 패키지
Emacsweb-mode.el
Notepad++Notepad++ Twig Highlighter 플러그인
Sublime TextTwig 번들 (Package Control 통해 설치 가능)
TextMateTwig 번들
VimJinja 구문 플러그인 또는 vim-twig 플러그인
브래킷Brackets Twig 확장 기능
GTKSourceView 기반 편집기 (예: gedit)Twig 언어 정의 파일
CodaTwig 구문 모드
Coda 2다른 Twig 구문 모드
SubEthaEditTwig 구문 모드


2. 2. 문법

트위그는 세 가지 종류의 구분자를 정의한다.

  • ``: 변수의 내용이나 표현식의 평가 결과를 출력하는 데 사용한다. 예를 들어, 상속된 트위그 템플릿에서 `` 와 같이 사용될 수 있다.
  • `{# ... #}`: 템플릿에 주석을 추가하는 데 사용한다. 이 주석은 최종적으로 렌더링된 페이지에는 포함되지 않는다.
  • `{% ... %}`: for 루프와 같은 명령문을 실행하는 데 사용한다.
  • {% set foo = 'bar' %}는 변수에 값을 할당하는 데 사용한다.[7]
  • {% if i is defined and i == 1%} ... {% endif %}조건문이다.
  • {% for i in 0..10 %} ... {% endfor %}루프 내의 카운터이다.


아포스트로피(`'`)는 이스케이프 문자로 사용된다.

반복 가능한 배열을 생성하려면 다음과 같이 작성한다.



{% set myArray = [1, 2] %}



키와 값을 가지는 연관 배열은 다음과 같이 생성한다.



{% set myArray = {'key': 'value'} %}



다음은 트위그의 기본적인 기능을 사용하는 예시이다.



{% extends "base.html" %}

{% block navigation %}



{% endblock navigation %}


2. 3. 연산자 우선순위

연산자 우선순위는 다음과 같으며, 우선순위가 낮은 것부터 높은 순서로 나열된다.[2]

연산자역할
b-and비트 AND
b-xor비트 XOR
b-or비트 OR
orOR
andAND
==같음?
!=다름?
<작음
>
>=크거나 같음
<=작거나 같음
in안에 있음
matches일치
starts with시작
ends with종료
..시퀀스 (예: 1..5)
+더하기
-빼기
~연결
*곱하기
/나누기
//소수점 아래를 버린 나눗셈
%나머지
is테스트 (예: is defined 또는 is not empty)
**거듭제곱
>필터[5]
[]배열 항목
.객체의 속성 또는 메서드 (예: country.name)


2. 4. 특수 변수

트위그는 템플릿 내에서 사용할 수 있는 몇 가지 특수 변수를 제공한다.

  • loop: 현재 실행 중인 루프(반복문)에 대한 정보를 담고 있는 변수이다. 예를 들어, loop.index는 현재까지 반복된 횟수를 나타낸다.
  • 전역 변수: 밑줄(_)로 시작하는 변수들은 전역적으로 사용 가능하다. 주요 전역 변수는 다음과 같다.
  • * _route: 웹사이트 도메인 이름 뒤에 오는 URL 경로 부분을 의미한다.
  • * _self: 현재 사용 중인 템플릿 파일의 이름을 나타낸다.
  • : 페이지 경로를 생성하는 예시는 다음과 같다:
  • CGI 환경 변수: 서버의 환경 변수에 접근할 수 있다. 예를 들어 서버 이름을 가져오려면 다음과 같이 사용한다:

3. 지원 환경

트위그는 다양한 통합 개발 환경(IDE)과 텍스트 편집기에서 지원된다.[2] 자세한 지원 목록은 아래 하위 섹션에서 확인할 수 있다.

3. 1. 통합 개발 환경 (IDE)

트위그는 다음과 같은 통합 개발 환경(IDE)에서 지원된다.[2]

  • 이클립스: Twig 플러그인을 통해 지원.
  • 코모도 및 코모도 편집: Twig 하이라이트/구문 검사 모드를 통해 지원.
  • 넷빈즈: Twig 구문 플러그인을 통해 지원 (7.1 버전까지), 7.2 버전부터는 기본 지원.
  • PhpStorm: 2.1 버전부터 기본 지원.
  • WebStorm을 포함한 IntelliJ IDE: 플러그인을 통해 지원.


또한 다음과 같은 텍스트 편집기에서도 지원된다.

  • Atom: PHP-twig for atom을 통해 지원.
  • Emacs: web-mode.el을 통해 지원.
  • Notepad++: Notepad++ Twig Highlighter를 통해 지원.
  • Sublime Text: Twig 번들을 통해 지원.
  • TextMate: Twig 번들을 통해 지원.
  • Vim: Jinja 구문 플러그인 또는 vim-twig 플러그인을 통해 지원.
  • 브래킷: Brackets Twig를 통해 지원.
  • Visual Studio Code: Twig 확장을 통해 지원.
  • GTKSourceView: Twig 언어 정의를 통해 지원.
  • Coda: Twig 구문 모드를 통해 지원.
  • Coda 2: 다른 Twig 구문 모드를 통해 지원.
  • SubEthaEdit: Twig 구문 모드를 통해 지원.

3. 2. 문서 편집기

트위그는 다음 통합 개발 환경에서 지원된다.[2]

통합 개발 환경지원 방식
코모도 및 코모도 편집Twig 하이라이트/구문 검사 모드
이클립스Twig 플러그인
넷빈즈Twig 구문 플러그인 (7.1 버전까지), 7.2 버전부터 기본 지원
PhpStorm2.1 버전부터 기본 지원
WebStorm을 포함한 IntelliJ IDE플러그인



또한 다음 텍스트 편집기에서도 지원된다:

텍스트 편집기지원 방식
아톰PHP-twig for atom 플러그인
브래킷Brackets Twig 플러그인
CodaTwig 구문 모드
Coda 2다른 Twig 구문 모드
이맥스web-mode.el
GTKSourceViewTwig 언어 정의
Notepad++Notepad++ Twig Highlighter 또는 트위그 하일라이터
서브에사에딧Twig 구문 모드
서브라임 텍스트Twig 번들
텍스트메이트Twig 번들
VimJinja 구문 플러그인 또는 vim-twig 플러그인
비주얼 스튜디오 코드Twig 확장


4. 예시

다음은 트위그의 기본적인 기능을 보여주는 예시 코드이다. 이 코드는 `base.html` 템플릿을 상속받아 `navigation` 블록의 내용을 새로 정의한다. `navigation` 변수에 담긴 각 항목(`item`)을 순회하면서 HTML 링크(``) 목록(`

참조

[1] 웹사이트 mitsuhiko/twig https://github.com/m[...] 2019-08-13
[2] 웹사이트 Twig for Template Designers - Documentation - Twig - The flexible, fast, and secure PHP template engine https://twig.symfony[...]
[3] 웹사이트 twigphp/Twig https://github.com/t[...] 2020-07-01
[4] 웹사이트 Symfony2 Documentation — Documentation http://docs.symfony-[...] 2010-08-05
[5] 웹사이트 Filters - Documentation - Twig - The flexible, fast, and secure PHP template engine https://twig.symfony[...]
[6] 웹사이트 Extending Twig - Documentation - Twig - The flexible, fast, and secure PHP template engine https://twig.symfony[...]
[7] 웹사이트 set - Documentation - Twig - The flexible, fast, and secure PHP template engine https://twig.symfony[...]
[8] Repository Original Repository https://github.com/m[...]
[9] Github Release v3.3.4 · twigphp/Twig · GitHub https://github.com/t[...]
[10] 문서 Twig documentation for template designers http://twig.sensiola[...]
[11] 문서 Symfony2 Documentation http://docs.symfony-[...]
[12] 문서 Twig documentation for template designers http://twig.sensiola[...]
[13] 문서 Extending Twig http://twig.sensiola[...]
[14] 웹인용 mitsuhiko/twig https://github.com/m[...] 2019-08-13



본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.

문의하기 : help@durumis.com