개요
트위그(Twig)는 PHP 언어용 오픈소스 템플릿 엔진이다. 원본 프로젝트는 2009년 Fabien Potencier가 Symfony 프레임워크와 함께 개발했으며, 현재는 독립적인 라이브러리로도 널리 사용된다. Twig는 템플릿 파일(.twig) 안에 로직을 최소화하고, PHP 코드와 HTML 마크업을 명확히 분리하도록 설계된 것이 특징이다.
주요 특징
| 특징 | 설명 |
|---|---|
| 표현식 기반 문법 | {{ variable }} 형태로 변수 출력, {% if %} ... {% endif %} 등 제어 구조를 제공한다. |
| 자동 이스케이프 | 기본적으로 HTML 이스케이프가 적용되어 XSS 방지에 기여한다. |
| 확장성 | 사용자 정의 필터, 함수, 테스트, 태그 등을 추가할 수 있다. |
| 캐시 | 컴파일된 템플릿을 파일 시스템이나 메모리에 캐시하여 성능을 향상시킨다. |
| 다중 언어 지원 | 다국어 번역을 위한 trans 필터 및 기타 국제화 도구와 연동이 가능하다. |
사용 환경
- PHP 7.2 이상 (PHP 8.x에서도 호환)
- Symfony 프레임워크 기본 템플릿 엔진으로 채택됨
- Laravel, Slim 등 기타 PHP 프레임워크에서도 별도 패키지를 통해 사용 가능
예시
{# greeting.twig #}
<h1>Hello, {{ name|e }}</h1>
{% if user.isAdmin %}
<p>관리자 권한이 있습니다.</p>
{% endif %}
위 템플릿은 PHP 코드와 분리되어, PHP에서는 다음과 같이 렌더링한다.
$loader = new \Twig\Loader\FilesystemLoader('/path/to/templates');
$twig = new \Twig\Environment($loader, ['cache' => '/path/to/compilation_cache']);
echo $twig->render('greeting.twig', ['name' => $userName, 'user' => $user]);
어원
‘Twig’라는 명칭은 영어 단어 twig(작은 가지)에서 차용된 것으로 추정된다. 프로젝트 개발자는 “가볍고 신속하게 자라나는 작은 가지처럼, 템플릿 엔진도 경량이며 빠르게 동작한다”는 의미를 담아 명명한 것으로 알려져 있다. 공식 문서에서 구체적인 어원 설명은 제공되지 않는다.
관련 프로젝트 및 파생
- Twig Extensions: 국제화(i18n), 시간 형식화 등 추가 기능을 제공한다.
- Twig Bridge: Symfony 외의 프레임워크와 통합하기 위한 어댑터 패키지.
참고
- 공식 웹사이트: https://twig.symfony.com/
- GitHub 저장소: https://github.com/twigphp/Twig
- 최신 릴리스 정보 및 문서는 위 사이트에서 확인할 수 있다.