본문 바로가기
PHP

PHP 기본

by FraisGout 2020. 7. 2.

웹 시스템(web system)

우리가 매일 사용하고 있는 인터넷을 구성하는 시스템을 웹 시스템(web system)이라고 합니다.

 

이러한 웹 시스템은 다음 그림과 같이 클라이언트(client)와 서버(server)로 구성됩니다.

 

서버(server)란 간단히 말해 웹 서비스를 제공하는 컴퓨터를 의미합니다.

 

클라이언트(client)란 서버가 제공하는 웹 서비스를 이용하는 사용자 또는 사용자의 기기(브라우저)를 의미합니다.

 

클라이언트 사이드와 서버 사이드

웹 시스템에서의 처리는 클라이언트와 서버 중 어느 쪽에서 수행되는 작업인가에 따라 다음과 같이 구분할 수 있습니다.

 

 

 

1. 클라이언트 사이드(client-side)

 

2. 서버 사이드(server-side)

 

 

 

클라이언트 사이드(client-side) 클라이언트 측에서 수행하는 처리를 의미합니다.

 

웹 시스템에서 브라우저는 서버에서 수신한 HTML 문서를 해석하여 여러분의 화면에 표시해 줍니다.

 

이러한 클라이언트 사이드에서 자주 사용하는 스크립트 언어에는 자바스크립트(JavaScript)가 있습니다.

 

 

 

서버 사이드(server-side) 서버 측에서 수행하는 처리를 의미합니다.

 

브라우저에서 요청한 HTML 문서에 서버 사이드 스크립트 언어의 코드가 포함되어 있으면, 서버는 이 부분을 자신이 처리하고 그 결과를 브라우저에 보내 줍니다.

 

이러한 서버 사이드에서 자주 사용하는 스크립트 언어가 바로 PHP입니다.

 

이처럼 서버에 미리 저장된 파일이 아닌 서버에 있는 데이터들을 서버 사이드 스크립트 언어로 가공하여 생성되는 페이지를 동적 웹 페이지(dynamic web page)라고 합니다.

 

PHP(PHP: Hypertext Preprocessor)

PHPC언어를 기반으로 만들어진 서버 측에서 실행되는 서버 사이드 스크립트 언어입니다.

 

 

 

PHP로 작성된 코드를 HTML 코드 안에 추가하면, 웹 서버는 해당 코드를 해석하여 자동으로 HTML 문서를 생성합니다.

 

따라서 PHP를 사용하면 동적으로 빠르게 HTML 문서를 만들 수 있습니다.

 

PHP?

PHP(PHP: Hypertext Preprocessor)C언어를 기반으로 만들어진 서버 측에서 실행되는 서버 사이드 스크립트 언어입니다.

 

 

 

PHP는 동적 웹 페이지를 쉽고 빠르게 만들 수 있도록 해주는 데 그 목적이 있습니다.

 

PHP로 작성된 코드를 HTML 코드 안에 추가하면, 웹 서버는 해당 PHP 코드를 해석하여 동적 웹 페이지를 생성합니다.

 

동적 웹 페이지(dynamic web page)란 서버가 사용자의 요청을 해석하고, 해당 데이터를 가공하여 생성하는 웹 페이지를 의미합니다.

따라서 사용자는 상황에 따라 달라지는 웹 페이지를 볼 수 있게 됩니다.

 

PHP의 특징

PHP의 장점은 다음과 같습니다.

 

 

 

1. 주요 운영체제와 대부분의 웹 서버에서 지원합니다.

 

2. 다른 프로그래밍 언어보다 직관적으로 코드를 작성할 수 있어서, 작성해야 하는 코드의 양이 적습니다.

 

3. 텍스트 처리에 특화되어 있어 HTML 문서 처리에 적합합니다.

 

 

 

PHP의 단점은 다음과 같습니다.

 

 

 

1. 간단한 사이트를 제작하기 위해 만든 언어라서 복잡한 사이트를 만드는 데는 효율적이지 못합니다.

 

2. 보안에 안전하지 않은 언어 구조를 가집니다.

 

PHP의 역사

PHP1995년에 PHP 1(Personal Home Page Tools) 버전이 라스무스 러도프(Rasmus Lerdorf)에 의해 만들어졌습니다.

 

이후 1997년에는 PHP/FI 2(Personal Home Page / Forms Interpreter)이 공개됩니다.

 

1998년에 이르러 오늘날의 PHP와 매우 유사한 PHP 3이 공개됩니다.

 

2000년에는 Zend 엔진을 도입한 PHP 4가 공개되며, 2004년에는 객체 지향 개념이 강화된 PHP 5가 발표됩니다.

 

 

 

하지만 2005년부터 10년간 개발 중이던 PHP 6 프로젝트가 결국 2010년에 취소되면서 위기를 맞습니다.

 

그 후 근본적인 개선을 통해 기존 PHP 5와의 호환성을 최대한 유지하면서도 기존보다 2배 이상의 속도 향상을 이끌어 낸 PHP 7201512월에 발표되었습니다.

 

현재는 PHP 7.1 후보안120169월에 발표되었으며, 201612월에 드디어 PHP 7.1 정식버전이 발표되었습니다.

 

PHP 버전별 주요 특징

PHP 5에서는 객체 지향 프로그래밍의 개념이 많이 추가됩니다.

 

PHP 5.3에서는 네임스페이스(namespaces)가 추가됩니다.

 

PHP 5.4에서는 단일 상속의 한계를 없앤 트레이트(traits) 개념이 추가됩니다.

 

최신 버전인 PHP 7에서는 2배 이상의 속도 향상 및 익명 클래스(anonymous classes)가 추가됩니다.

 

PHP 동작 원리

웹 프로그래밍 언어

웹 시스템 중 서버 측에서 실행되는 서버 사이드 언어를 웹 프로그래밍 언어라고도 부릅니다.

 

이러한 웹 프로그래밍 언어 중 많이 사용되는 언어는 다음과 같습니다.

 

 

 

1. PHP

 

2. JSP

 

3. ASP.NET

 

 

 

예전에는 많은 상업용 사이트가 PHP를 사용하였지만, 보안상의 취약성으로 인해 JSPASP.NET으로 대체되고 있습니다.

 

하지만 아직도 소규모나 개인 사이트는 대부분의 사이트가 PHP를 사용하여 제작되고 있습니다.

언어별로 서로 장단점이 다르므로, 사용 목적이나 상황에 따라 알맞은 언어를 고르는 것이 바람직합니다.

PHP 동작 원리

PHP는 웹 시스템인 클라이언트 / 서버 환경에서 동작하는 서버 사이드 스크립트 언어입니다.

: 클라이언트가 웹 브라우저를 통해 웹 서버에 원하는 웹 페이지를 요청합니다.

 

: 웹 서버는 클라이언트가 요청한 웹 페이지의 로직 및 데이터베이스와의 연동을 위해 PHP 파서(parser)에 이에 대한 처리를 요청합니다.

 

: 이때 PHP 파서는 데이터베이스와의 연동이 필요하면 데이터베이스와 데이터의 처리를 수행합니다.

 

: PHP 파서는 웹 페이지의 로직 및 데이터베이스와의 작업 처리 결과를 웹 서버로 전달합니다.

 

: 웹 서버는 전달받은 데이터로 웹 페이지를 완성하여 웹 브라우저로 응답을 전송합니다.

 

PHP 문법

PHP 코드 영역

PHP 코드는 웹 페이지의 어느 부분에나 위치할 수 있습니다.

 

따라서 PHP 파서가 PHP 코드를 인식하기 위해서는 그 시작과 끝을 알려줄 필요가 있습니다.

 

 

 

PHP 코드 영역을 알려주는 방식에는 다음과 같이 여러 가지 스타일을 사용할 수 있습니다.

 

문법

1. PHP 권장 스타일 : <?php ... ?>

 

2. HTML 스크립트 스타일 : <script language = "php"> ... </script>

 

3. SGML 스타일 : <? ... ?>

 

4. ASP 스타일 : <% ... %>

 

 

 

PHP 권장 스타일과 HTML 스크립트 스타일은 그 어떤 상황에서도 정확히 인식될 것입니다.

 

하지만 SGML 스타일과 ASP 스타일은 php.ini 설정 파일의 특정 태그를 활성화했을 경우에만 정확히 인식될 것입니다.

 

따라서 서버별 이식성 문제 등을 피하기 위해서라도 PHP 권장 스타일을 사용하는 것이 좋습니다.

 

 

 

)

<?php

 

echo "PHP 수업에 잘 오셨습니다!";

 

?>

 

PHP 문법

C언어처럼 PHP 명령문도 마지막은 세미콜론(;)으로 끝납니다.

 

)

<?php

 

echo "PHP 수업에 잘 오셨습니다!";

 

?>

 

 

 

PHP 코드가 종료되면 자동으로 세미콜론을 적용해주므로, 아래의 예제도 정상적으로 동작합니다.

 

)

<?php

 

echo "PHP 수업에 잘 오셨습니다!"

 

?>

 

 

 

또한, PHP 코드 영역을 나타내는 종료 태그도 생략할 수 있습니다.

 

)

<?php

 

echo "PHP 수업에 잘 오셨습니다!";

위의 모든 예제는 정상적으로 동작하겠지만, 가독성이나 예상치 못한 상황을 위해 세미콜론(;)과 종료 태그를 모두 사용하는 것이 좋습니다.

 

PHP 주석

주석(comment)이란 코드 내에 삽입된 일종의 설명문입니다.

 

주석은 작성자나 다른 개발자가 나중에 코드를 수정할 때 참고할 수 있으며, 웹 페이지 개발 시 디버깅에도 활용됩니다.

 

이러한 주석은 PHP 코드의 어느 부분에라도 작성할 수 있으며, 웹 브라우저의 동작에는 전혀 영향을 미치지 않습니다.

 

 

 

PHP 주석은 다음과 같이 여러 가지 스타일을 사용할 수 있습니다.

 

문법

1. 한 줄 C언어 스타일 : //주석문

 

2. 여러 줄 C언어 스타일 : /*주석문*/

 

3. 한 줄 쉘 스타일 : #주석문

 

 

 

PHP 주석은 줄의 끝이나 PHP 코드 영역을 나타내는 종료 태그 중 먼저 나오는 부분까지만 주석으로 처리합니다.

 

따라서 PHP 코드 영역을 나타내는 종료 태그 이후에 나오는 HTML 코드는 주석이 아닌 정상적인 코드로 인식됩니다.

 

)

<?php

 

// C언어 스타일의 한 줄 주석

 

/*

 

C언어 스타일의 여러 줄 주석

 

*/

 

# 쉘 스타일의 한 줄 주석

 

?>

 

<p>PHP 주석에 대한 예제입니다.

 

<?php /* echo "PHP 수업에 잘 오셨습니다! " */ ?>

 

파이팅!</p>

 

위의 예제에서 PHP 주석은 '?>'인 종료 태그의 직전까지만 적용되며, 그 뒤에 나오는 화이팅!이라는 문자열과 </p> 태그는 정상적으로 인식됩니다.

 

 

 

다음 예제는 PHP에서 여러 줄 주석 안에 또 다른 주석을 삽입하는 예제입니다.

 

)

/* 여러 줄

 

// 이렇게 두 줄 주석 안에 또 다른 한 줄 주석을 삽입할 수 있습니다.

 

# 이렇게 두 줄 주석 안에 또 다른 한 줄 주석을 삽입할 수 있습니다.

 

주석입니다. */

 

 

 

위의 예제처럼 PHP에서는 여러 줄 주석 내부에 또 다른 한 줄 주석을 삽입할 수 있습니다.

 

 

 

하지만 다음 예제처럼 여러 줄 주석 내부에 또 다른 여러 줄 주석을 삽입할 수는 없습니다.

 

)

/* 여러 줄

 

/* 또 다른 여러 줄 주석입니다. */

 

주석입니다. */

 

 

 

위의 예제처럼 여러 줄 주석 안에 또 다른 여러 줄 주석을 삽입하게 되면, 삽입한 주석의 종료를 알려주는 번 라인의 기호(*/)를 바깥쪽 주석이 자신의 종료를 알려주는 번 라인의 기호(*/)로 잘못 인식하게 됩니다.

 

따라서 위의 예제에서 번 라인은 주석으로 정상 인식되지 않으며, PHP 파서가 오류를 발생시킵니다.

 

 

 

그러므로 PHP에서 여러 줄 주석(/* */)은 절대로 중첩하여 사용해서는 안 됩니다.

 

echo() 함수

echo() 함수 C언어의 printf() 함수나 C++cout 객체와 같이 HTML 스트림에 문자열을 출력해 줍니다.

 

 

 

이러한 echo() 함수는 실제 함수가 아니므로, 인수를 전달할 때 괄호(())를 사용해도 되고 생략할 수도 있습니다.

 

또한, 가변 길이 인수와 같이 함수 문맥으로도 사용할 수 없습니다.

 

하지만 두 개 이상의 인수를 전달할 때는 반드시 괄호를 사용해서는 안됩니다.

 

 

 

PHP는 키워드, 클래스, 함수, 사용자 함수 이름의 대소문자를 구분하지 않습니다.

 

따라서 ECHOEcho를 사용해도 모두 같은 동작을 합니다.

 

 

 

)

<?php

 

echo "문자열을 출력합니다.<br>";

 

echo ("인수를 전달할 때 괄호를 사용해도 괜찮습니다!<br>");

 

ECHO "echo() 함수의 키워드는 대소문자를 구분하지 않습니다!<br>";

 

echo "첫 번째 인수, ", "두 번째 인수";

 

//echo("첫 번째 인수, ", "두 번째 인수"); // 오류 발생

 

?>

위의 예제에서 사용된 <br>태그(break line)는 새로운 단락을 만들지 않고 줄을 나눠주는 HTML 태그입니다.

PHP에서 echo(), print(), isset() 등과 같이 실제 함수가 아닌 구문을 언어 구조(language construct)라고 표현하지만, 우리 수업에서는 여러분이 헷갈리지 않도록 함수라고 부를 것입니다.

'PHP' 카테고리의 다른 글

PHP function  (0) 2020.07.02
PHP array  (0) 2020.07.02
PHP expressions  (0) 2020.07.02
PHP operator  (0) 2020.07.02
PHP 기초  (0) 2020.07.02

댓글