본문으로 이동
메뉴 여닫기
환경 설정 메뉴 여닫기
개인 메뉴 여닫기
로그인하지 않음
지금 편집한다면 당신의 IP 주소가 공개될 수 있습니다.

PHP: Hypertext Preprocessor

HTML 문서 안에 코드를 끼워 넣어 서버에서 실행하는 웹 전용 스크립트 언어

1994년 라스무스 러도프가 만들었다. 처음 이름은 Personal Home Page Tools 였고, 지금의 이름은 자기 자신을 가리키는 재귀 약어다. 서버 측에서 실행되어 결과 HTML만 브라우저로 내려보낸다.

  • 인터프리터 언어이며 변수 선언 없이 바로 쓸 수 있다. 변수는 `$` 로 시작한다.
  • 동적 타이핑. 문맥에 따라 자료형이 자동 변환된다.
  • `<?php ... ?>` 구획 안에만 코드를 쓰고 나머지는 HTML로 그대로 출력된다.
  • MySQL을 비롯한 주요 데이터베이스와의 연동 함수를 기본 제공한다.
  • 라이선스가 자유롭고 웹 서버와의 연동이 쉬워 웹 호스팅 환경에서 널리 쓰인다.
종류 연산자
산술
- * / % **
대입 = += -= *= /= .=
비교 == != <> === !== < > <= >= <=>
논리 && ! and or xor (논리합은 파이프 기호 두 개)
문자열 . (연결) .= (연결 대입)
증감
+ --
오류 제어 @ (해당 식의 오류 메시지를 억제한다)
실행 `...` (백틱. 셸 명령을 실행한다)
  • `==` 는 값만 비교하고 `===` 는 값과 자료형을 함께 비교한다.
  • `!=` 와 `<>` 는 같은 뜻이다.
  • `#` 는 연산자가 아니라 한 줄 주석 기호다. `//` 와 `/* */` 도 주석으로 쓴다.
  • `@` 는 다른 언어에 없는 PHP 특유의 오류 제어 연산자다.

웹 서버에 붙이는 방식이 두 가지다.

  • 모듈 방식 : 웹 서버 프로세스 안에서 실행된다. 아파치에서는 소스로 설치할 때
 `libphp5.so` (PHP 7 이상은 `libphp7.so`) 라는 공유 라이브러리가 만들어지고
 `LoadModule php5_module modules/libphp5.so` 로 적재한다.
 `mod_` 로 시작하는 이름이 아니라는 점이 자주 출제된다.
  • FastCGI 방식 : `php-fpm` 이라는 별도 프로세스가 요청을 처리한다.
 웹 서버와 분리되어 nginx에서도 쓸 수 있고 자원 관리가 유연하다.
  • PHP 5 (2004) — 객체지향 문법을 제대로 갖췄다. 오래 표준처럼 쓰였다.
  • PHP 7 (2015) — 실행 엔진을 새로 짜 성능이 크게 올랐다. 스칼라 타입 선언 도입
  • PHP 8 (2020) — JIT 컴파일러, 이름 있는 인수, `match` 식