PHP 비판 중 빠지지 않는 것이 함수 명명의 일관성이 없다는 것이다. 맞는 말이다. PHP 함수들 중 예전에 만들어졌고, 아직도 폐기되지 않은 것 중 많은 함수들이 일관성이 없다. 일부는 C 표준 라이브러리 이름과 일치하고 있으며, 어떤 것은 그렇지 않다.
하지만, 명명 규칙이 만들어진 이후의 함수와 클래스들은 규칙에 따라 만들어지고 있기 때문에 PHP 사용자들도 이에 따라 개발을 하는 것이 좋다.
기본적으로 사용자 입장에서 전체적인 코딩 규칙은 PSR에 따르는 것이 현재로서는 최선이다. 다만 PHP 기본 함수/클래스들은 아래와 같은 규칙을 가진다.
- 접두어는 확장 모듈 이름이 된다. (
mysqli_connect
) - 함수는 단어 사이에 언더스코어를 사용하고, 클래스는 카멜(camelCase) 또는 파스칼(PascalCase)를 사용한다. PSR에 따르면 클래스 이름은 파스칼, 메소드는 카멜을 쓰면 된다.
- 반복자(Iterator)와 예외(Exception) 클래스는 접미어로 Interator와 Exception을 붙인다.
- 매직 메소드는 두개의 언더스코어를 메소드 앞에 붙인다. (
__get
)
사용자 입장에서 세세한 코딩 규칙은 PSR에 따르면 그만이지만, PHP 기본 함수들에 대해서는 이런 규칙을 가지고 있다는 것 정도 기억 해두면 좋다. 다만 예전부터 만들어진 함수들은 이런 규칙에 맞지 않는 경우가 많은데, 찾아보면 SPL에 대신 사용 가능한 클래스가 있는 경우 SPL을 쓰는 것을 추천하고 싶다.
그럼에도 불구하고 어쩔 수 없이 옛날 함수를 써야 할 일은 피할 수 없다는 아쉬움이 남는다. 하루 바삐 PHP에서 이런 오래 된 부분을 정리하고 새롭게 출발 할 수 있는 날이 오길 바란다.