PHP
PHP(피에이치피)는 HTML 문서 안에 포함하여 작동하는 서버 측 스크립트 프로그래밍 언어이다. 1994년 라스무스 러도프(Rasmus Lerdorf)가 개발했다. 원래 Personal Home Page의 약자였으나, 나중에 "PHP: Hypertext Preprocessor"의 약자라고 설명되었다. 리눅스 운영체제에 아파치 웹서버를 설치하고 마이에스큐엘(MySQL) DB 환경에서 PHP 프로그래밍 언어가 주로 사용되기 때문에 LAMP라는 말이 생겼다.
개요
PHP란 주로 HTML 코드를 프로그래밍적으로 생성하며, 서버 쪽에서 실행되는 프로그래밍 언어이다. 또한 Personal Home Page Tools의 약자에서 PHP:Hypertext Preprocessor 로 의미가 변경되었다.〈ref name="생활코딩"〉 생활코딩, 〈PHP란 무엇인가?〉, 《오픈튜토리얼스》, 2011-09-16〈/ref〉 원래 동적 웹 페이지를 만들기 위해 설계되었고 이를 구현하기 위해 PHP로 작성된 코드를 HTML 소스 문서 안에 넣으면 PHP 처리 기능이 있는 웹 서버에서 해당 코드를 인식하여 작성자가 원하는 웹 페이지를 생성한다. 근래에는 PHP 코드와 HTML을 별도로 파일을 분리하여 작성하는 경우가 일반적이며, PHP 또한 웹 서버가 아닌 PHP-FPM(PHP FastCGI Process Manager)을 통해 실행하는 경우가 늘어나고 있다.[1]
등장배경
1994년 라스무스 러도프(Rasmus Lerdorf)가 고안했으며, PHP의 처음 개발 당시 약자는 Personal Home Page Tools로써, 이름에서도 알 수 있듯이, 개인이 홈페이지를 좀 더 쉽게 만들기 위해 개발한 실용적인 툴로 제작되었다.
역사
PHP는 1995년 라스무스 러도프(Rasmus Lerdorf)에 의해 PHP 1버전이 만들어졌으며, 그 후로 개발이 계속되어 오늘날까지 이르게 되었다.
- PHP 1.0 : 1995년 6월 8일 출시되었고, 라스무스 러도프(Rasmus Lerdorf)가 개발하였다. 초기에는 펄로 작성된 스크립트였지만, 그 후 C 언어로 고쳐서 작성된 PHP (Personal Home Page Tools)가 된다.
- PHP 2.0 (PHP/FI) : 1996년 4월 16일 출시되었고, FI(Form Interpreter, SQL이 만든 DBMS 도구)가 통합되어 1997년에 PHP/FI2.0 이 된다. 정식명칭은 "Personal Home Page Construction Kit/Form Interpreter"이다.
- PHP 3.0 :1998년 6월 6일 출시되었고, PHP/FI를 기반으로, 앤디·가트만즈와 제이브·스라스키에 의해 PHP3(PHP:Hypertext Preprocessor)로 업데이트되었다. PHP 3.0의 강점 중의 하나는 강력한 확장기능이라고 할 수 있다. 엔드유저에게 다양한 데이터베이스 접근을 위해 견고한 인프라 구조, 여러 가지 프로토콜과 API를 제공해주었으며, 이 기능으로 인해 수많은 개발자가 개발에 참여하여 새로운 확장 모듈을 개발 할 수 있게 되었다.
- PHP 4.0 : 2000년 5월 22일 출시되었고, PHP3의 기능을 크게 확장하고, Zend 엔진을 도입하였으며 여러 가지 웹 서버에 대한 지원, HTTP 세션, 출력 버퍼링, 강화된 유저 입력 제어, 몇 가지 새로운 언어 구조와 같은 핵심기능들을 제공하게 되었다.
- PHP 4.1 : 2001년 12월 10일 출시되었고, 슈퍼 전역 변수가 추가된다.
- PHP 4.2 : 2002년 4월 22일 출시되었고, register_globals의 초기값이 Off로 변경된다.
- PHP 4.3 : 2002년 12월 27일 출시되었고, 명령 줄 인터페이스가 추가된다.
- PHP 4.4 : 2005년 7월 11일 출시되었고, 같은 날 PHP4의 지원을 2007년 12월 31일에 종료한다고 고지했다. 중대한 보안 문제에 관한 수정만, 2008년 8월 8일까지 계속되어 그 후 모든 지원을 종료했다.
- PHP 5.0 : 2005년 7월 13일 출시되었고, 의사적인 객체 지향이 한층 강화됨과 동시에 클래스 라이브러리로서 SPL가 지원되었다. 또, SQLite 가 표준으로 장착되게 되었다. Zend 엔진 2.0을 도입했다.
- PHP 5.1 : 2005년 11월 24일 출시되었고, 실행 속도가 개선되고 PDO 확장 기능이 추가된다.
- PHP 5.2 : 2006년 11월 2일 출시되었고, 확장 모듈에 필터(Filter)가 기본으로 추가된다.
- PHP 5.3 : 2009년 6월 30일 출시되었고, 이름공간 (Namespace), 지연 정적 바인딩(Late static bindings), goto, 클로저(Native closures), ?: 연산자, 가비지 컬렉션(garbage collection)등과 같은 기능들이 추가 및 변경되었다.
- PHP 5.4 : 2012년 3월 1일 출시되었고, 단일 상속의 한계를 벗어난 트레이트와 짧은 배열 구문이 추가되었다.
- PHP 5.5 : 2013년 6월 20일 출시되었고, 제너레이터(Generators)와 코루틴(coroutines), finally 키워드, 강화된 패스워드 해슁 함수, 배열과 문자열의 디레퍼런싱, 상수 클래스명 ::class, empty() 함수가 수식을 지원, foreach 내 이터레이터(Interator)로 논스칼라(non-scalar) 사용, foreach 구문에 list() 사용, op코드 캐시를 위한 Zend OPcache 등과 같은 기능들이 추가 및 변경되었다.
- PHP 5.6 : 2014년 8월 28일 출시되었고, 선언에 상수 표현식 지원, 가변길이 인수에 대한 문법 (...$args), 매개변수 해체(argument unpacking), 거듭제곱 연산자 (**), 추가적인 use 문 (use function, use const), SAPI 모듈을 위한 새로운 phpdbg 디버거 등과 같은 기능이 추가 및 변경되었다.
- PHP 7.0 : 2015년 12월 3일 출시되었고, 성능 향상 - PHP 5.6 보다 두배 이상 빠른 속도, 메모리 사용률이 현저히 감소, 추상 구문 트리(Abstract Syntax Tree), 일관된 64비트 지원(Consistent 64-bit support), 향상된 예외 상속(Improved Exception hierarchy), 많은 치명적 에러들이 예외로 전환 됨, 보안 난수 발생기(Secure random number generator), 오래 됐거나 지원하지 않는 SAPI와 확장 지원 중단, Null 병법 연산자(The null coalescing operator (??)), 리턴 값, 스칼라 타입 정의, 익명 클래스(Anonymous Classes), Zero cost asserts등과 같은 기능들이 추가 및 변경되었다.[1][2]
특징
스크립트 언어
웹에 최적화된 언어로, 웹 개발에 필요한 수많은 로직이 함수의 형태로 미리 제공된다. 또한 웹 서버에서 처리가 이루어지는 대표적인 스크립트 언어이다.
간편한 배포
PHP의 특징은 배포가 편리하다는것이다. 개발자는 빌드할필요없이 php파일을 서버에 업로드만하면된다. PHP 엔진이 웹에서 사용자의 요청이 들어오면 인터프리터가 읽고 캐싱한뒤 실행코드를 만들어둔다.
쉬운 코드 작성
C언어와 Perl보다 쉬운 문법을 가지고있다. 나중에는 객체지향 요소가 추가되었다. 그리고 스크립트 언어이기 때문에 HTML문서 내부에 입력하여 실행 할 수 있는 편리한 언어이다.
빠른 처리 속도
PHP는 인터프리터 방식언어 중에서 파이썬이나 PERL 언어보다 빠르다.
- 거의 모든 OS에서 실행이 가능하고, PDO를 이용할 경우 여러가지의 DBMS 연결을 지원한다.
- 속도가 빠르며, 특히 리눅스, Nginx, PHP, MySQL은 속도가 월등하다.
- 클래스 생성 및 상속이 가능하므로 코드를 모듈화시키기가 용이하다.
- ASP나 JSP처럼 컴포넌트나 패키지등을 따로 설치하지 않고, 파일 업로드 및 파일 전송 등의 기능이 내장되어 배포되고있다.
- 문법이 C 언어와 JAVA 언어의 문법과 비슷하기 때문에 ASP나 JSP에 비해 코드의 양을 많이 줄일 수 있다.
- 데이터베이스 연결에 함수를 사용하므로 직관적이고 간결하다.
- 이미지를 동적으로 생성할 수 있다.
- XML, ZIP, PDF, 암호화 등에 관련된 다양한 함수를 지원한다. [3]
한계점
PHP 표준 실행환경은 웹서버에 의존해서 실행되는데 요청을 수행후 프로세스를 종료한다 그래서 프레임워크같이 덩치가 큰 프로그램도 요청 수행후 다시시작되는데 이는 프로그램의 반응속도를 늦추게 한다.[4]
각주
참고자료
- 생활코딩, 〈PHP란 무엇인가?〉, 《오픈튜토리얼스》, 2011-09-16
- 서버구축이야기, 〈PHP란 무엇인가?〉, 《티스토리》, 2018-04-02
- TCP스쿨, 〈PHP 소개〉, 《TCP스쿨》
- 위시켓, 〈PHP 간단 개념과 장단점에 대해서〉, 《위시켓》, 2015-03-13
- 〈PHP〉, 《위키백과》
- PHP 공식 홈페이지 - http://docs.php.net/manual/kr/history.php.php
- KimWhale, 〈(웹언어) PHP 소개 및 장단점〉, 《티스토리》
같이 보기