PHP 5.4에서 주목할 만한 변경점
최근 PHP가 망할 조짐을 조금이라도 느끼고 있는지, 갑자기 사용자 의견을 적극적으로 반영해서 발 빠르게 작업을 하고 있는데 (시간 있고 관심 있으면 전체 목록을 참조), 그 중 아래 것들은 꽤 주목할 만하다.
1. Function array dereferencing
원래 PHP는 황당하지만 이게 안 됐다.
function boo(){
return array(1,2,3)
}
echo boo()[1];
이게 안 되어서 특정 변수에 함수 결과를 받아놓고 $var[1] 로 접근해야 했었는데, 이번에 드디어 이걸 지원하게 되어서 Array 반환 값이 존재하는 메서드 체이닝이 가능하게 되었다. 제안 및 패치는 2008년부터 있던 건데 허세 부리다가 인제야 정식으로 추가됨.
2. Allow <?= regardless of short_tags
본래 allow_short_tags 옵션이라는 것이 php.ini에 있었는데, XML 문법과 줄여 쓰는 PHP template 문법 (<?)가 겹쳤기 때문에 allow_short_tags를 키면 XML 문서를 해석할 때 많은 애로사항이 생겼었다. 하지만 그렇다고 이 옵션을 꺼버리면 <?= ?> 문법을 죄다 <?php echo … ?> 와 같이 사용해야 했기 때문에 불편하다. 5.4는 저 옵션에 상관없이 <?= ?>는 PHP가 파싱한다.
3. Array short syntax
framework이나 library를 쓰다 보면 PHP에서 제일 많이 쓰게 되는 것이 array일 것이다. 축약 문법을 몇 년 동안이나 고집스럽게 지원하지 않고 있다가, 이번에 드디어 축약 문법을 지원하게 되었다. 5.4에서 아래 코드는
$a = array(1, 2, 3);
$b = array('foo' => 'orange', 'bar' => 'apple', 'baz' => 'lemon');
이와 같이 표현할 수 있다.
$a = [1, 2, 3];
$b = ['foo' => 'orange', 'bar' => 'apple', 'baz' => 'lemon'];
웃긴 점은 세 가지 모두 아주 예전부터 제안이 오가던 것인데, 사용자들이 죄다 찬성해도 개발자 놈들이 껄떡거리면서 뻐기고 있다가 인제야 추가된다는 것. 이제 드디어 일이 정상적으로 돌아가는 느낌이다. 너무 늦은 것 같긴 하지만…