PHP
PHP(피에이치피)는 HTML 문서 안에 포함하여 작동하는 서버 측 스크립트 프로그래밍 언어이다. 1994년 라스무스 러도프(Rasmus Lerdorf)가 개발했다. 원래 Personal Home Page의 약자였으나, 나중에 "PHP: Hypertext Preprocessor"의 약자(backronym)라고 설명되었다. 리눅스 운영체제에 아파치 웹서버를 설치하고 마이에스큐엘(MySQL) DB 환경에서 PHP 프로그래밍 언어가 주로 사용되기 때문에 LAMP라는 말이 생겼다.
목차
개요
PHP란 주로 HTML 코드를 프로그래밍적으로 생성하며, 서버 쪽에서 실행되는 프로그래밍 언어이다. 또한 Personal Home Page Tools의 약자에서 PHP:Hypertext Preprocessor 로 의미가 변경되었다.[1] 원래 동적 웹 페이지를 만들기 위해 설계되었고 이를 구현하기 위해 PHP로 작성된 코드를 HTML 소스 문서 안에 넣으면 PHP 처리 기능이 있는 웹 서버에서 해당 코드를 인식하여 작성자가 원하는 웹 페이지를 생성한다. 근래에는 PHP 코드와 HTML을 별도로 파일을 분리하여 작성하는 경우가 일반적이며, PHP 또한 웹 서버가 아닌 PHP-FPM(PHP FastCGI Process Manager)을 통해 실행하는 경우가 늘어나고 있다.[2]
등장배경
1994년 라스무스 러도프(Rasmus Lerdorf)가 고안했으며, PHP의 처음 개발 당시 약자는 Personal Home Page Tools로써, 이름에서도 알 수 있듯이, 개인이 홈페이지를 좀 더 쉽게 만들기 위해 개발한 실용적이고 가벼운 툴로 제작이 되었다. [3]
역사
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"이다.[2]
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일 발표. 슈퍼 전역 변수가 추가된다.[2]
PHP 4.2
2002년 4월 22일 발표. register_globals의 초기값이 Off로 변경된다.[2]
PHP 4.3
2002년 12월 27일 발표. 명령 줄 인터페이스가 추가된다.[2]
PHP 4.4
2005년 7월 11일 발표. 같은 날 PHP4의 지원을 2007년 12월 31일에 종료한다고 고지했다. 중대한 보안 문제에 관한 수정만, 2008년 8월 8일까지 계속되어 그 후 모든 지원을 종료했다.[2]
PHP 5.0
2005년 7월 13일 발표. 의사적인 객체 지향이 한층 강화됨과 동시에 클래스 라이브러리로서 SPL가 지원되었다. 또, SQLite 가 표준으로 장착되게 되었다. Zend 엔진 2.0을 도입했다.[2]
PHP 5.1
2005년 11월 24일 발표. 실행 속도가 개선되고 PDO 확장 기능이 추가된다.[2]
PHP 5.2
2006년 11월 2일 발표. 확장 모듈에 필터(Filter)가 기본으로 추가된다.[2]
PHP 5.3
2009년 6월 30일 발표. 아래의 기능이 추가되었다.
- 이름공간 (Namespace)
- 지연 정적 바인딩(Late static bindings)
- goto
- 클로저(Native closures)
- ?: 연산자
- 가비지 컬렉션(garbage collection)[2]
PHP 5.4
2012년 3월 1일 발표. 단일 상속의 한계를 없앤 트레이트와 짧은 배열 구문이 추가되었다.[2]
PHP 5.5
2013년 6월 20일 발표. 아래의 기능들이 추가 또는 변경되었다.
- 제너레이터(Generators)와 코루틴(coroutines)
- finally 키워드
- 강화된 패스워드 해슁 함수
- 배열과 문자열의 디레퍼런싱
- 상수 클래스명 ::class
- empty() 함수가 수식을 지원
- foreach 내 이터레이터(Interator)로 논스칼라(non-scalar) 사용
- foreach 구문에 list() 사용
- op코드 캐시를 위한 Zend OPcache[2]
PHP 5.6
2014년 8월 28일 발표. 아래의 기능들이 추가되었다.
- 선언에 상수 표현식 지원
- 가변길이 인수에 대한 문법 (...$args)
- 매개변수 해체(argument unpacking)
- 거듭제곱 연산자 (**)
- 추가적인 use 문 (use function, use const)
- SAPI 모듈을 위한 새로운 phpdbg 디버거[2]
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[2]
특징
웹에 최적화된 언어로, 웹 개발에 필요한 수많은 로직이 함수의 형태로 미리 제공된다. 크로스 플랫폼을 사용하고 있으며, 거의 모든 데이터베이스를 지원한다는 장점 때문에 MySQL, mSQL, Oracle, Sybase 및 윈도우 ODBC등 여러 데이터베이스를 편리하게 연동이 가능하다. 또한 코드 작성이 쉽고 문법이 간단하고, C언어 혹은 JAVA언어의 문법과 비슷하기 때문에 보다 효율적인 코딩이 가능하다. 그리고 스크립트 언어이기 때문에 HTML문서 내부에 입력하여 실행 할 수 있는 편리한 언어이다. PHP는 인터프리터 방식을 채택하여 일반적인 ASP나 PERL 언어보다 빠른 처리속도를 가지고 있다. 파일 업로드나 메일 전송 등의 기능은 자체적으로 지원하기 때문에 별도의 설치가 필요없다. 그리고 이미지를 동적으로 생성할 수 있으며, XML, ZIP, PDF, 암호화 등에 관련된 다양한 함수를 지원하기에 쉽게 사용할 수 있다는 장점을 가지고 있다.[1]
한계점
PHP는 오직 "웹 개발"에 특화된 언어이고, 이 언어가 만들어진 목적 자체가 개인이 홈페이지를 좀 더 쉽게 만들기 위해 개발된 언어이기 때문에 간단한 사이트 제작에는 최적화되어 있지만, 방대한 웹사이트를 만들 경우, 체계적으로 구조를 잡기가 힘들어진다. 웹사이트를 만든 후 관리도 힘들기 때문에 복잡한 사이트를 만들기엔 관리하기가 힘들다. 또한 오픈소스이기 때문에 다른 프로그래머들이 쉽게 접근할 수 있어 보안 문제가 발생할 가능성이 있다.[3]
각주
참고 자료
- 생활코딩, 〈PHP란 무엇인가?〉, 《개인 블로그》, 2011-09-16
- 서버구축이야기, 〈PHP란 무엇인가?〉, 《개인 티스토리》, 2018-04-02
- TCP스쿨, 〈PHP 소개〉, 《TCP스쿨》
- 위시켓, 〈PHP 간단 개념과 장단점에 대해서〉, 《위시켓》, 2015-03-13
- 위키백과, <PHP>, 《위키백과》, 2019-06-29
- PHP 공식 홈페이지 - http://docs.php.net/manual/kr/history.php.php
같이 보기