본문 바로가기
PHP/생활코딩

5/20 생활코딩 < PHP 시작 >

by SKim입니다 2020. 5. 21.

* 오늘의 진도

 PHP

  시작 ~ PHP란 무엇인가

 

1. 커버 페이지

PHP

- 서버쪽에서 구동되는 프로그래밍 언어

   cf) HTML, JS - 클라이언트(웹브라우저)에서 구동된다.

- 데이터베이스와 상호작용하면서 데이터를 저장하고 표현한다.

  - 사용자가 업로드한 파일을 서버에 저장

    사용자가 입력한 데이터를 받아서, 데이터베이스나 파일에 저장

  - 저장된 정보를 불러와서 HTML을 프로그래밍적으로 생성해서 웹브라우저로 전송

- 웹을 위해서 만들어졌고, 지금도 웹을 위해서 발전하고 있는 웹을 위한 언어

  웹프로그래밍을 위한 높은 생산성을 제공

 

PHP로 만들어진 플랫폼

= 서버에 직접 설치해서 운영할 수 있는 설치형 서버 웹 애플리케이션

- textcube, wordpress, 제로보드 등

 

 

2. PHP란 무엇인가? - 1) 서버와 클라이언트

PHP는

Server side script = Server side technology = 서버 측면에 위치/동작하는 기술/언어이다.

 

'기술'을 두 가지로 분리하면

1) 기술 전체를 아우르는 개념

 - 서버

2) 각각의 기술들을 구성하고 있는, 부품과 같은 역할을 하는, 개별적인 기술들

 - Apache, IIS

 - PHP, Python, Java

 - MySQL, oracle

 

각각의 부품들이 하나의 틀 안에 모아져 있고, 고정되어 있고, 서로 연결되기 위해서

그것들을 연결시켜주는 개념 = 프레임 = 뼈대 = 골격이 필요하다.

 

서버와 클라이언트는 우리 수업에서 가장 중요한 뼈대, 가장 큰 골격에 해당

→ 이것을 먼저 이해한 후에, 그 안에 들어가는 개별적인 기술(부품)들을 끼워넣는다.

 

우리가 배울 PHP는 저기쯤 위치하는 기술이다.

 

클라이언트(갑): 무언가를 요청하는 사람

서버: 제공 / 요청에 대해서 응답

 

우리가 웹서버 / 웹프로그램 / 웹사이트에 접속할 때,

우리는 클라이언트이다.

 

웹사이트의 컴퓨터는 서버이다.

(우리가 브라우저를 통해서 요청한 것에 대한 응답을 하고, 요청한 것에 대한 정보를 제공)

 

아이폰, 안드로이드폰, 노트북, 데스크탑 등이 큰 틀에서 클라이언트다.

클라이언트에 설치되어 있는 SW 중에 웹사이트에 접근할 때 사용하는 웹브라우저는 웹클라이언트다.

ex) IE, 크롬, 파이어폭스, 사파리 등

 

그럼 웹서버라는 것도 있을 것이다.

ex) Apache, IIs, nginx 등

웹서버는 그림에서 PHP 위에 있다.

 

우리가 웹브라우저에 도메인이나 ip를 입력하고 엔터를 치면

웹브라우저가 인터넷을 통해서 서버컴퓨터가 위치하고 있는 주소로 가서

웹서버라는 SW를 만나게 된다.

 

그리고 그 웹서버에게 요청을 하게 된다.

ex) 네이버 페이지를 보여달라. 네이버 블로그의 특정한 페이지를 보여달라.

웹서버가 그 요청에 응답한다.

웹서버에 저장돼있던 HTML을 웹브라우저에게 전송한다.

→ 웹브라우저가 HTML을 해석해서 사용자에게 웹페이지를 보여준다.

 

이것이 초창기의 인터넷 구도였다.

클라이언트는 웹클라이언트만 있었고,

서버는 웹서버만 있었다.

그때는 PHP, MySQL, Python같은 언어가 웹을 위해 사용되지 않았다.

 

문제: HTML은 정적인 파일이다.

→ 사람이 HTML 문서를 수작업으로 하나하나 만들어야 한다.

 

인터넷의 규모가 커지고 네이버, 구글같은 서비스가 생기면서

사람이 수작업으로 HTML을 만드는 것이 한계에 달했다.

- 그 많은 웹페이지를 사람이 어떻게 다 만들겠냐

  전체적인 변화가 필요하다면 그 변화를 어떻게 반영할 것이냐

 

 

 

→ CGI (Common Gateway Interface)

 

웹브라우저의 주소표시창에 위 그림과 같은 주소를 입력하고 엔터를 치면

인터넷을 통해서 o2.org에 해당되는 컴퓨터를 찾아갈 것이다.

 

→ 웹서버를 만난다.

→ topic.php라는 페이지를 원한다고 웹서버에게 요구한다.

 

웹서버는 파일의 확장자명에 주목한다.

cf) 파이썬은 py

 

확장자가 html이라면 웹서버는 바로 그 파일을 웹클라이언트에게 전달한다.

그러나 php는 웹서버가 처리할 수 없는 것이고,

PHP 엔진이 이것을 처리할 수 있다는 것을 안다.

 

→ PHP 엔진에게 위임한다.

= PHP 엔진을 구동시키고, topic.php 파일을 구동하라고 한다.

 

→ PHP 엔진은 topic.php 파일을 열어서,

 그것을 PHP 문법에 따라서 해석한 다음에,

 그 결과를 웹서버에게 준다.

 

→ 웹서버는 마치 HTML 문서를 웹클라이언트에게 전송하는 것과 똑같이,

 그 정보를 웹클라이언트에게 전송한다.

 

CGI (Common Gateway Interface)

: 웹서버와 PHP 엔진 사이에 서로 통신할 수 있는 정해져 있는 통신 규약 / 약속

 

∴ 아파치를 엔진x로, 엔진x를 IIS로, PHP를 파이썬으로, Java로도 바꿀수도 있다.

즉, CGI가 존재하기 때문에, 이런 각각의 기술들은 서로 독립적으로 교체할 수 있다.

= 표준화의 장점

 

* PHP는 하나의 프로그래밍 언어이기 때문에,

 PHP를 이용해서 웹페이지를 만들지 않고도 게시판 등의 여러가지 데이터나 정보를 다이나믹하게 표현할 수 있다.

 = PHP 기술의 등장 배경

 

2. PHP란 무엇인가? - 2) PHP의 특성 (특징, 장단점)

인터넷과 웹

인터넷 - 전세계에 있는 컴퓨터들을 연결하는, 컴퓨터들과의 네트워크를 포괄하는 것

 ex) 인터넷 게임, 스카이프 통신 등

 

웹 - 그 네트워크 위에서 동작하는 하나의 서비스 또는 애플리케이션

      웹브라우저를 통해서 서버와 클라이언트가 통신하는 방식

      웹을 사용자에게 표시해서 보여주는 언어가 HTML이다.

 

PHP - Personal Homepage Tools

PHP의 처음 이름은 Personal Homepage Tools였다.

개인의 홈페이지를 쉽게 만들 수 있는 아주 가벼운 도구로 시작

인터넷과 웹이 시작되면서 그 이후에 만들어진 언어이기 때문에,

PHP와 웹은 뗄레야 뗄 수 없는 관계에 있다.

 

→ PHP는 웹개발을 하는데 있어서 펄펄 날아다닌다.

   최근에는 웹개발에 다양한 언어들이 사용되고 있긴 하지만

   여전히 PHP는 웹개발에 가장 많이 사용되는 언어 중 하나다.

 

PHP - Hypertext Preprocessor

지금 PHP의 이름은 Hypertext Preprocessor이다.

 

Hypertext: 문서와 문서가 링크로 연결되어 있는 것

Hypertext를 만드는 언어가 HTML이다.

∴ Hypertext = HTML이라고 생각해도 된다.

 

Preprocessor (전처리): HTML이 브라우저에게 전달되기 전에,

 HTML을 여러가지 목적에 의해서 프로그래밍적으로 또 다이나믹하게 만들어내는 언어/시스템

 

※ PHP는 초창기에는 Perl로 작성이 됐는데 지금은 C로 새롭게 만들어졌다.

 

PHP의 장점 ①

PHP가 기본적으로 제공하는 기본 기능들 = API

PHP로 웹개발을 하려면, 먼저 이 중에서 자신이 필요로 하는 것이 있는지 확인해봐야 한다.

∵ 우리가 직접 구현하는 것보다 빠르다.

 물론 PHP 코드가 엉망이라면 우리가 짠 것이 더 빠를 수도 있지만,

 둘다 이상적인 로직을 갖고 있다면, PHP가 더 로우레벨의 기술이기 때문에 훨씬 더 빠르다.

 

PHP의 장점 ②

PHP는 웹을 위해서 만들어진 언어이고, 가장 성공한 언어 중 하나이기 때문에,

우리가 웹을 운영하는 시스템(컴퓨터, OS 등)에는 기본적으로 PHP가 설치되어 있을 가능성이 높다.

→ 우리가 PHP를 설치하기 위해서 수고하지 않아도 된다.

 

※ 어떤 시스템은 그 시스템에 프로그램을 설치하는 것을 허용하지 않는 경우도 있다.

→ 이런 경우에는 그 언어를 이용해서 애플리케이션을 구축할 수 없다.

 

Web Hosting (공유 호스팅)

한 대의 컴퓨터에 OS가 설치되어 있고 (맨 밑에 네모)

여러가지 시스템들이 설치되어 있는데, 그 중 하나로 PHP가 설치되어 있다고 하자. (가운데 네모)

여기에 여러 명의 사용자들이 있다. (맨 위에 네모)

 

한명 한명의 사용자들이 각각의 계정을 가지고 한 대의 컴퓨터를 공유해서 사용한다.

그 목적은 웹 애플리케이션을 동작시키기 위한 것.

 

PHP의 장점 ③

Web Hosting은 각각의 계정을 발급한다.

윈도우로 치면 루트/슈퍼 사용자가 아니라, 표준/일반 사용자이다.

 

∴ 이 시스템에 PHP가 설치되어 있지 않다면,

 PHP 애플리케이션을 여기서 동작시킬 수 없고,

 따라서 PHP 애플리케이션을 개발할 수 없다.

 

그러나 PHP는 대부분의 Web Hosting에서 기본적으로 설치되어 있기 때문에,

이런 시스템을 이용하는 데 거의 제한이 없다.

 

PHP의 장점 ④

컴파일이 필요없는 interpreter 방식의 언어이다.

 

웹 애플리케이션

이러한 장점들 때문에 PHP로 만들어진 웹 애플리케이션이 매우 많다.

아마 가장 많을 것이다.

 

우리가 만든 웹사이트도 웹 애플리케이션이지만,

그것은 자신이 만들고자 하는 목적이 있고, 그 목적에 맞게 만들어진 애플리케이션이다.

 

여기서 말하는 웹 애플리케이션은,

어떤 특정한 비즈니스에서만 사용되는 것이 아니라,

아주 일반적인 목적에서 사용될 수 있는 형태의 애플리케이션을 말한다.

 

ex) 게시판(제로보드, 엑스잇), 블로그(워드프레스, 텍스트큐브), 사이트 빌더(두루팔, 엔진엑스, 제로보드), 포럼형 게시판(PhpBB, 외국에서 많이 사용) 등

 

이런 기능이 필요할 경우, 우리가 직접 구현하는 것이 아니라,

이런 웹 어플리케이션을 다운받아서

Web Hosting이나 클라우드 컴퓨터나 자신의 컴퓨터에 직접 설치해서 서비스를 할 수 있다.

 

PHP 애플리케이션은 작은 규모의 서비스에서도 많이 사용되지만,

굉장히 큰 규모의 서비스에서 사용하는 경우도 꽤 많다.

ex) 위키피디아, 페이스북 등

 

PHP의 장점 ⑤

PHP는 Personal Homepage Tools라는 이름에서 보듯이

상당히 실용적인 목적으로 만들어진 언어이다.

그래서 사람들이 쉽게 사용할 수 있어야 한다는 방향성을 가지고 발전했기 때문에

배우기가 쉽다.

 

다른 언어도 근본적인 원리는 비슷하기 때문에,

PHP를 먼저 배우면, 다른 언어를 배울 때 훨씬 수월하다.

 

PHP의 단점 ①

Web only - 웹을 위한 언어로 만들어졌기 때문에, 

웹 외의 용도로는 사용되기 어렵고, 실질적으로 사용하지 않는다.

 

하지만 이것이 단점이라고 하기에는

웹이 너무나 중요한 프로그래밍의 대상이다.

 

PHP의 단점 ②

오픈소스 커뮤니티에서 만들어진 시스템이다보니,

많은 사람들의 손을 타서, 일관성이 없어서 예측성이 떨어진다.

→ 기억해야 할 것이 많다.

 

ex) 기능의 이름의 일관성, 함수 인자의 위치나 이름의 일관성

 

PHP의 단점 ③

사람들이 쉽게 배우도록 하려다 보니,

사람들이 프로그래밍에서 어려워하는 것을 제거했고,

덜 엄격하다.

 

→ 프로그램을 실행하는 과정에서 오류가 일어날 확률이 높다.

 (동전의 양면)

'PHP > 생활코딩' 카테고리의 다른 글

5/22 생활코딩  (0) 2020.05.22
5/21(4) 생활코딩  (0) 2020.05.21
5/21(3) 생활코딩  (0) 2020.05.21
5/21(2) 생활코딩  (0) 2020.05.21
5/21 생활코딩  (0) 2020.05.21

댓글