원래는 personal home page tools 였는데,
hypertext preprocesseor 의 약자이다.
perl 언어의 영향을 많이 받았다.
변수 이름 앞에 var), 를 붙인다.
배열이 연관 배열로 작동한다.
문자열끼리 결합할 대 점(.) 연산자로 결합한다. 다른 언어처럼 더하기 기호(+) 로 문자열을 결합하려 하면 엉뚱한 결과가 나온다. php에서 +는 숫자 덧셈만 한다. 따라서 두 문자열에 +를 사용하면 두 값이 숫자 0으로 형변환 되어 잘못된 결과가 나온다. (예: "Hello, " + "world!" = 0)
무상태성 (stateless) 이 가장 큰 특징으로, http 프로토콜과 마찬가지로 상태를 유지하지 않는다.
php 웹 서버에 요청을하면 해당 스크립트를 실행한 뒤 완전히 종료하고, 그 다음 새 요청이 들어오면 처음부터 시작하는 방식이다. 이 때문에 php에서 싱글톤 패턴을 구현하면, 객체는 한 요청에 의한 작업이 끝날때 까지만 유지된다. 이러한 트겅으로 인해 메모리 관리가 쉽고, 사용자(브라우저요청 cli 입력 등) 가 잘못된 입력을 해서 오류가 났을 때 개별적으로 처리하게 되므로 안전하지만, 상태를 유지할 수 없기에 php로는 db 커넥션 풀을 만들 수가 없다.
php 파일은 스크립트 실행 영역이 있다.
<?php ... ?> 권장 <? ... ?> 비권장
php 는 오픈소스이며 포팅된 곳이 많아, 거의 모든 웹 서버에서 실행할 수 있다.
유닉스(리눅스), 윈도우, macOs 모두 지웒낟.
php는 무상태성, 요청할 때 마다 핫 리로딩이 되서 배포가 편해지고, 오류에 대해 덜 민감하다.
PHP는 간편하게 서버에 올릴 수 있다. PHP 인터프리터에서 PHP 파일을 실행할 때마다 파일 내용을 확인 후, 바뀐 부분이 없으면 캐시를 실행하고, 바뀐 부분은 다시 해석한 뒤 캐시 하는 방식으로 작동해서 업로드만 하면 되니까 간편하다.
위의 특징들로 인해 프로젝트가 커지면 빌드시간이 늘어나는 다른 언어들과 달리 PHP는 개발이나 배포할 때 빌드가 필요 없다.