안녕하세요. 이제 막 걸음마 떼기 시작한 PHP 입문자 다메입니다.
이 소책자는 입문자가 입문자의 눈높이에서 작성하는 PHP 입문서 입니다.
제가 PHP에 입문하게 되어서, 입문자의 눈에서 입문자를 위한 입문서를 써보면 어떨까?
하는 생각을 가지게 되어 학습한 내용을 이해한 선에서 쉽게 풀어서 게시하려고 합니다.
이번 포스트 내용은 PHP의 특징에 관한 내용입니다. 시작합니다.
1. PHP란?
PHP란 Personal Home Page의 약자로 정식 명칭은 [PHP : Hypertext Preprocessor] 입니다.
사용자의 요청에 따라 웹에서 이용하는 HTML 등의 HyperText 문서를 동적으로 생성하여
화면을 빠르게 만들 수 있는 것이 장점입니다.
즉, 빠른 실행 속도와 낮은 구현 난이도로 많은 사랑을 받는다고 합니다.
(저도 입문자라 실제로 그런지는 더 해보고 말씀 드리겠습니다.)
※HTML : HyperText Markup Language, 웹 문서를 작성하기 위한 프로그래밍 언어의 한 종류
2. PHP의 장점
1) 무료로 사용 가능
PHP는 오픈소스이기 때문에 무료로 이용할 수 있습니다.
오픈소스이기 때문에 사용자가 언어 개발에 직접 참여합니다.
즉, 사용자의 수에 비례해 잦은 업데이트가 이루어 집니다.
사용자가 필요없는 라이브러리를 구축하지는 않겠죠?
당연히 사용자 입장에서 필요할 것 같은 기능들이 업데이트 됩니다!
내가 만들지 않아도 이미 원하는 기능이 있다면 생산성이 엄청 높아질 것 같지 않나요?
2) 배우기 쉬운 언어
PHP는 C, Java, Perl과 비슷한 문법을 사용하며, 다양한 라이브러리를 제공합니다.
특정 프로그래밍 언어를 배운 경험이 있다면 비교적 단시간에 PHP를 습득할 수 있습니다.
만약 프로그래밍 경험이 없더라도 예제가 많기 때문에(오픈소스의 장점) 습득하는데 어렵지 않습니다.
저는 주로 검색을 이용해서 해당 내용을 찾아봅니다.
3) 쉬운 디버깅
PHP는 오류가 발생 시 작성한 페이지에 바로 결과가 나타나기 때문에
(설령 오류가 발생하지 않더라도 예상한 출력이 아니라면 바로 확인이 가능.)
다른 언어에 비해 디버깅 하기가 쉽습니다.
코드를 수정하고, 저장한다음 해당 페이지를 새로고침하면 바로 결과가 뙇!
4) 높은 호환성
PHP가 설치가 되어 있다면, 운영체제(Mac, Linux, Windows)에 구애받지 않고 원활히 동작합니다.
전에 PHP 언어로 작성된 Open API를 이용해본 경험이 있습니다.
Mac, Linux, Windows 동일하게 동작하더라구요.
C의 경우는 Windows에서 동작되는게 Linux에서는 동작을 안하고...
반대의 경우도 마찬가지고.... 그랬는데 PHP는 그럴 일이 없으니 얼마나 좋습니까?
3. 기술적 특징
1) 서버 사이드 스크립트 언어
PHP는 서버에서 동작한다는 사실 알고 계시나요?
만약 브라우저에서 어떤 사이트에 방문해서 정보를 교환할 때는 HTML 형식으로 교환합니다.
서버는 HTML 형식으로 받은 데이터를 PHP를 이용하여 동적으로 가공한 다음
브라우저에게 HTML 형식으로 반환합니다.
서버에서 동작하기 때문에 서버 사이드 스크립트(Server-Side Script) 라고 한답니다.
이러나 저러나 결과물은 HTML 언어이니 헷갈리시면 안됩니다!
PHP는 결과물(HTML 형식의 데이터)을 제공하기 위한 도구입니다!
2) 문자 코드 자동 변환
우리가 그냥 사용하는 글자들은 다 문자 코드라는것이 있어요.
UTF-8 이라던지 UTF-16 이라던지 EUC-KR 이라던지....
요새는 UTF-8을 많이 사용한다고 하는데, 이러한 설정을 서버의 PHP 설정파일 하나만 변경해주면
주고받는 모든 데이터를 UTF-8 방식으로 자동으로 변환해 줍니다.
만약 이게 불가능 하다면 일일히 주고 받는 데이터를 UTF-8 방식으로 변환해 줘야 됩니다.
데이터를 UTF-8 방식으로 변환하는 법 알고 계시나요? 저는 모릅니다.
하지만 설정파일 변경으로 할 수 있습니다!
3) 세션 관리의 편리함
이건 아직 잘 모르겠어요.
클라이언트와 서버 간의 상태를 유지하기 위한 세션을 관리하는게 간단하다고 합니다.
이건 나중에 알게되면 말씀 드릴게요! 아무튼 쉽다는걸 보니 장점인거 같아요.
4) 각종 데이터베이스(DB) 지원
데이터베이스(DB)에 대해서 혹시 들어 보셨나요?
DB는 서버에 저장된 크고 다양한 엑셀 파일이라고 생각하시면 될 것 같아요.
엑셀 파일에는 행, 열에 데이터를 저장할 수 있죠?
DB는 서버에 분별한 데이터를 저장해서 필요할 때 꺼내쓰는 일종의 창고에요!
창고에 저장되는 내용물은 필요에 따라 변하기도 하는데, DB 또한 그렇습니다.
DB를 제공하는 회사가 여러 회사가 있는데, 개발사 별 DB는 대동소이 합니다.
하지만 그 작은 차이점 때문에 어떤 플랫폼에선 이용하지 못할 수 있어요.
하지만! PHP는 다양한 DB를 지원하고 있어 지원하는 한도 내에서 내가 원하는 DB만 고르면 됩니다.
5) PDF, Ming, XML, JSON 등 다양한 라이브러리 지원
아까 오픈소스의 장점에서 설명했듯, 라이브러리가 엄청 잘 만들어져 있습니다.
다른 매체와 연동하는 확장성 라이브러리가 잘 제공이 되어있으니(이게 다 선배 개발자 분들의 업적)
우리는 가져다 쓰기만 합시다.
나중에 실력이 늘게되면 한줄 남겨보는것도 어쩌면 영광스러운 일일 수 있겠네요.
6) 객체 지향성
이는 객체 지향 언어에 관한 지식이 없는 사람에게는 조금 생소할 수 있습니다.
객체 지향 언어는 절차 지향 언어와 비교되는데,
절차 지향 언어는 기존의 C언어 같이 객체가 데이터만 보유하는
단순하고 불편한 언어라고 생각하시면 됩니다.
객체 지향 언어는 객체가 데이터 뿐만이 아닌 사용하는 방법(method)까지
포함할 수 있다고 생각하시면 됩니다.
데이터와 사용 방법을 동시에 보유한다니, 얼마나 큰 장점인지 아직 감이 잘 안오시죠? :D
이는 앞으로 꾸준히 살펴볼 내용이니
"아, 이거 내 생각보다 엄청 편리한 도구인거 같다!" 라고 생각하시면 좋겠네요.
(사실 저도 Java 언어를 배우기 전엔 뭔 얘기인지도 몰랐습니다.)
오늘은 이정도만 살펴보는 것으로 마치겠습니다.
사실 저도 전에 PHP를 사용해본적은 있지만 수박 겉핥기 수준이었고,
이렇게 자세하게 파고드는것은 처음인지라 차근차근 조금씩 업로드 해 나가도록 하겠습니다.
다음 챕터는 환경 구축을 다뤄보도록 하겠습니다. 긴 글 읽어주셔서 감사합니다! 잘부탁드립니다!