Language/Php

[Php] 정의, 특징, 역사, 동작 원리, 기본문법(코드 영역, 주석, 문자출력)

재초찡 2025. 10. 22. 23:57
반응형

PHP란?

  • PHP(PHP: Hypertext Preprocessor)는 C언어를 기반으로 만들어진 서버 측에서 실행되는 서버 사이드 스크립트 언어다.
  • PHP로 작성된 코드를 HTML 코드 안에 추가하면, 웹 서버는 해당 PHP 코드를 해석하여 동적 웹 페이지를 생성한다.
동적 웹 페이지(dynamic web page)란 서버가 사용자의 요청을 해석하고, 해당 데이터를 가공하여 생성하는 웹 페이지를 의미한다. 따라서 사용자는 상황에 따라 달라지는 웹 페이지를 볼 수 있다.

 

PHP의 특징

장점

  • 주요 운영체제와 대부분의 웹 서버에서 지원한다.
  • 다른 프로그래밍 언어보다 직관적으로 코드를 작성할 수 있어서, 작성해야 하는 코드의 양이 적다.
  • 텍스트 처리에 특화되어 있어 HTML 문서 처리에 적합하다.

단점

  • 간단한 사이트를 제작하기 위해 만든 언어라서 복잡한 사이트를 만드는 데는 효율적이지 못하다.
  • 보안에 안전하지 않은 언어 구조를 가다.

 

PHP의 역사

  • PHP는 1995년에 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 7이 2015년 12월에 발표되었다.
  • 이어 2016년에는 PHP 7.1, 2019년에는 마지막 7.x 버전인 PHP 7.4가 나왔으며, 2020년에는 JIT 컴파일러를 도입한 PHP 8.0이 발표되었다. 이후 2021년 PHP 8.1, 2022년 PHP 8.2, 2023년 PHP 8.3, 2024년 PHP 8.4가 차례로 발표되었다.

 

PHP 동작 원리

http://www.tcpschool.com/php/php_intro_works

  • ① : 클라이언트가 웹 브라우저를 통해 웹 서버에 원하는 웹 페이지를 요청한다.
  • ② : 웹 서버는 클라이언트가 요청한 웹 페이지의 로직 및 데이터베이스와의 연동을 위해 PHP 파서(parser)에 이에 대한 처리를 요청한다.
  • ③ : 이때 PHP 파서는 데이터베이스와의 연동이 필요하면 데이터베이스와 데이터의 처리를 수행한다.
  • ④ : PHP 파서는 웹 페이지의 로직 및 데이터베이스와의 작업 처리 결과를 웹 서버로 전달한다.
  • ⑤ : 웹 서버는 전달받은 데이터로 웹 페이지를 완성하여 웹 브라우저로 응답을 전송한다.

 

PHP 기본 문법

PHP 코드 영역

  • PHP 코드는 웹 페이지의 어느 부분에나 위치할 수 있다. 따라서 PHP 파서가 PHP 코드를 인식하기 위해서는 그 시작과 끝을 알려줄 필요가 있다.
  • PHP 코드 영역을 알려주는 방식에는 다음과 같이 여러 가지 스타일을 사용할 수 있다.
// 1. PHP 권장 스타일
<?php ... ?>

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

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

// ASP 스타일
<% ... %>
  • PHP 권장 스타일과 HTML 스크립트 스타일은 그 어떤 상황에서도 정확히 인식되지만, SGML 스타일과 ASP 스타일은 php.ini 설정 파일의 특정 태그를 활성화했을 경우에만 정확히 인식된다. 따라서 서버별 이식성 문제 등을 피하기 위해서라도 PHP 권장 스타일을 사용하는 것이 좋다.

PHP 문법

  • C언어처럼 PHP 명령문도 마지막은 세미콜론(;)으로 끝난다.
<?php
    echo "PHP 수업에 잘 오셨습니다!";
?>
  • PHP 코드가 종료되면 자동으로 세미콜론을 적용해주므로, 아래의 예제도 정상적으로 동작한다.
<?php
    echo "PHP 수업에 잘 오셨습니다!"
?>
  •  PHP 코드 영역을 나타내는 종료 태그도 생략할 수 있다.
<?php
    echo "PHP 수업에 잘 오셨습니다!";
  • 위의 모든 예제는 정상적으로 동작하겠지만, 가독성이나 예상치 못한 상황을 위해 세미콜론(;)과 종료 태그를 모두 사용하는 것이 좋다.

PHP 주석

1. 한 줄 C언어 스타일   : //주석문
2. 여러 줄 C언어 스타일 : /*주석문*/
3. 한 줄 쉘 스타일      : #주석문
  • PHP 주석은 줄의 끝이나 PHP 코드 영역을 나타내는 종료 태그 중 먼저 나오는 부분까지만 주석으로 처리한다. 따라서 PHP 코드 영역을 나타내는 종료 태그 이후에 나오는 HTML 코드는 주석이 아닌 정상적인 코드로 인식된다.
<?php
    // C언어 스타일의 한 줄 주석
    
    /*
        C언어 스타일의 여러 줄 주석
    */
    
    # 쉘 스타일의 한 줄 주석
?>

<p>PHP 주석에 대한 예제입니다.
    <?php /* echo "PHP 수업에 잘 오셨습니다! " */ ?>
화이팅!</p>
  • PHP에서 여러 줄 주석 안에 또 다른 주석을 삽입할 수 있다.
/* 여러 줄
    // 이렇게 두 줄 주석 안에 또 다른 한 줄 주석을 삽입할 수 있습니다.
    # 이렇게 두 줄 주석 안에 또 다른 한 줄 주석을 삽입할 수 있습니다.
주석입니다. */
  • 하지만 여러 줄 주석 내부에 또 다른 여러 줄 주석을 삽입할 수는 없다. 그러므로 PHP에서 여러 줄 주석(/* */)은 절대로 중첩하여 사용해서는 안 다.
/* 여러 줄
    /* 또 다른 여러 줄 주석입니다. */
주석입니다. */

echo() 함수

  • echo() 함수 C언어의 printf() 함수나 C++의 cout 객체와 같이 HTML 스트림에 문자열을 출력해 준다. 이러한 echo() 함수는 실제 함수가 아니므로, 인수를 전달할 때 괄호(())를 사용해도 되고 생략할 수도 있다. 또한, 가변 길이 인수와 같이 함수 문맥으로도 사용할 수 없다. 하지만 두 개 이상의 인수를 전달할 때는 반드시 괄호를 사용해서는 안된다.
  • PHP는 키워드, 클래스, 함수, 사용자 함수 이름의 대소문자를 구분하지 않는다. 따라서 ECHO나 Echo를 사용해도 모두 같은 동작한다.
<?php
    echo "문자열을 출력합니다.<br>";
    echo ("인수를 전달할 때 괄호를 사용해도 괜찮습니다!<br>");

    ECHO "echo() 함수의 키워드는 대소문자를 구분하지 않습니다!<br>";
    echo "첫 번째 인수, ", "두 번째 인수";
    //echo("첫 번째 인수, ", "두 번째 인수"); // 오류 발생
?>
  • PHP에서 echo(), print(), isset() 등과 같이 실제 함수가 아닌 구문을 언어 구조(language construct)라고 표현하지만, 여러분이 헷갈리지 않도록 임의로 함수라고 부를 것을 참고하자.

 

Reference

반응형