나는 PHP 여는 태그로 긴 태그(<?php ?>)를 사용한다. 짧은 태그(<? ?>)는 작성하지 않는다. 기본으로 short_open_code를 비활성화하고 개발하는 게 좋다고 본다. 모든 환경에 호환되는 코드를 작성하는 습관을 들이는 편이 좋다고 생각하기 때문이다. 사실 short_open_tag = OffPHP 소스의 php.ini 기본값이기도 하다.

그래도 php라고 더 치는 게 귀찮은 것은 사실, 그래서 자동완성을 만들었다. PhpStorm의 경우 live template이라고 부른다.

설정 > Editor > live template

아래 이미지를 참고해서 라이브 템플릿을 만들어 보자.

PhpStorm의 설정을 열고, Editor 밑의 live template으로 간다. 그냥 설정의 검색 필드에 live라고만 쳐도 나온다.

만들려고 하는 것은, <?라고 쓴 뒤 탭을 누르면 <?php ?>라고 완성되고 여는 태그와 닫는 태그 사이에 커서가 위치해 있게 하는 것이다.

  • 우선 우측의 +를 눌러서 새 항목 추가로 들어간다.
  • 하단의 느낌표를 보자. 어떤 언어를 작성할 때 사용할 것인지를 지정하는 것이다. Define을 클릭하면 언어 종류가 뜬다. PHP를 선택하자.
  • Abbreviation은 자동완성을 하기 위해 적어야 할 키워드를 말한다. 여기에 <?를 적는다.
  • Template text는 탭을 눌렀을 때 어떻게 할 지 적는 것이다. <?php $END$ ?>라고 넣어 주면, 긴 태그를 출력한 뒤 태그 사이에 커서가 위치하게 된다.
  • 우측 하단의 Options에 Expand with는 키워드를 Template text로 확장할 때 사용할 단축키를 선택하는 것인데, 탭이 기본값이므로 수정할 필요가 없다.

저장하고, PHP 파일을 편집해 보자. <?라고 적고 탭을 누르면 <?php ?>가 나오고 가운데 커서가 위치하게 되는 것을 볼 수 있을 것이다.

<?=<?php echo ?> 자동완성하기

<?=는 PHP 5.4 미만에서 short_open_tag 종속적이다. 즉, short_open_tag가 활성화돼 있어야 <?=가 작동한다. 이 문제를 회피하기 위해 <?=를 사용하지 않고 <?php echo를 사용하는 것으로 결정할 수도 있다. 그렇다면 <?=를 입력한 뒤 탭을 눌러 <?php echo ?>로 자동완성을 하는 live template을 만들 어서 편리하게 사용할 수 있다. 역시 커서를 가운데 위치하게 하자.

  • Abbreviation은 <?=로 쓴다.
  • Template text는 <?php echo $END$ ?>로 쓴다.
  • 나머지는 위와 같다.

이렇게 하면 5.4 미만까지 호환성을 충족하는 코딩을 할 수 있다.