본문 바로가기

프로그래밍 공부/PHP

PHP - 개요, 규칙, 상수와 변수 그리고 배열

PHP는 Personal Home Page의 약자로 정식 명칭은 PHP : Hypertext Preprocessor이다. 사용자의 요청에 따라서 HTML 등의 하이퍼텍스트(Hypertext) 문서를 동적으로 생성해 화면을 빠르게 만들 수 있다.

PHP의 특징은 아래와 같다.

  1. 무료로 사용가능한 오픈소스(Open Source)이다.
  2. 디버깅이 쉽다.
  3. 윈도우(Window), 리눅스(Linux) 그리고 Mac OS 등의 멀티 플랫폼을 지원한다.
  4. 서버 사이드 스크립트(Server-Side Script)언어로 Ruby나 Python 등의 언어와 유사하다.
  5. MySQL 등의 각종 데이터베이스를 지원한다.
  6. 객체지향(Object-Oriented) 언어이다.

작성 규칙

1
2
3
<?php /* 시작 태그이다. */
   // 여기에 코드를 작성한다.
?> <!-- 종료 태그이다. -->
cs

PHP 코드는 '<?php' 로 시작해서 '?>' 종료한다. 단순히 '<?'로 시작해서 '?>'로 종료할 수도 있으나, '<?xml' 형태의 XHTML 또는 XML 문서와 함께 사용할 수도 있기 때문에 분별을 위해 '<?php'로 시작해 '?>'로 종료하는 코드를 사용하는 것이 좋다. 

HTML5, CSS3JavaScript와 마찬가지로 PHP는 '/* */', '//' 또는 '<!-- -->' 형태로 주석을 사용할 수 있다. 주석 범위 안에 들어간 코드는 실행이 되지 않는다.

문자 표시

1
2
3
<?php
    print "안녕하세요!";
?>
cs

'print "내용";' 문을 사용한다. 문자열을 큰따옴표("") 또는 작은따옴표('')로 묶는다. 행의 마지막에는 세미콜론(;)을 사용한다.

HTML에 삽입

1
2
3
4
5
6
7
8
9
10
<html>
<head>
    <title>PHP 테스트</title>
</head>
<body>
<?php
    print "안녕하세요!";
?>
</body>
</html>
cs

PHP 파일을 HTML 태그로 작성하고 프로그램으로 제어하고 싶은 부분만 PHP 코드로 작성할 수 있다. 주로 회원 목록을 검색하고 표시할 때와 같이 매번 페이지 내용이 바뀔 때 활용한다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<html>
<head>
    <title>PHP 테스트</title>
</head>
<body>
<b>
    <?php
        print "안녕하세요!";
    ?>
</b>
<?php
    print "<br>";
    print "<br>";
?>
<?php
    print "안녕하세요!";
?>
</boby>
</html>
cs

시작 태그와 종료 태그를 여러 군데에 작성할 수도 있다. 이런식으로 작성된 코드는 확장자를 .php를 붙여 PHP 문서로, 문자 코드는 UTF-8로 저장한다. 만약 확장자에 .html을 붙여 HTML 문서로 저장하면 PHP 코드는 실행되지 않고 작성한 코드를 그대로 출력하게 된다.

상수

상수(예시로 JavaScript에서는 const로 변수를 선언할 때 상수가 된다.)는 코드가 실행되는 중에 변경하지 않는 값을 미리 할당해 두는 것이다. PHP는 미리 정의된 수많은 상수를 제공한다. 상수에는 관습적으로 대문자를 사용한다.

상수 이름 설명
PHP_VERSION PHP의 버전
PHP_OS PHP가 실행 중인 OS
_LINE_ 처리 중인 파일의 현재 줄 번호
_FILE_ 처리 중인 파일의 전체 경로와 이름
_DIR_ 처리 중인 파일의 디렉토리
_FUNCTION_ 함수명
_CLASS_ 클래스명
_TRAIT_ 트레이명
_METHOD_ 클래스 메서드명
_NAMESPACE_ 현재 네임스페이스 이름
true
false 거짓
null null값(아무 값이 없음)

define 함수를 사용하면 자신만의 상수를 정의할 수 있다.

1
2
3
4
<?php
    define("상수명""정의할 값");
    print 상수명;
?>
cs

위와 같은 식으로 사용할 수 있다. 상수명은 대문자와 소문자를 구분하지만, 대문자로만 사용하면 코드를 읽기가 쉬워진다. 또 상수는 PHP 코드 어디서든 사용할 수 있어서 사용자에게 나타낼 메세지를 정의하기 편리하다.

변수

JavaScript의 변수(Variable)와 같은 개념이다. JavaScript에서는 var, let 또는 const(상수)로 변수를 선언하지만, PHP에서는 '$변수명' 으로 변수를 지정할 수 있다.

1
2
3
4
5
6
<?php
    $abc// 가능하다.
    $ABC// $abc와는 다른 변수(대/소문자 구별을 한다.)다.
    $123// 숫자는 변수명의 첫 글자로 사용할 수 없다.
    $_123// 언더바(_)를 사용하면 숫자를 사용할 수 있다.
?>
cs

또한 '$this'에 경우는 클래스 안에서 사용하는 특별한 변수이기 때문에 다른 장소에서는 사용할 수 없다. 정리하면 아래와 같다.

문자 설명
a~z(소문자) 대문자와 소문자를 따로 구별한다.
A~Z(대문자)
0~9 $의 바로 다음에는 숫자를 써넣을 수 없다.
0x7F~0xFF 코드를 가진 문자
_ 언더바

변수에 데이터를 할당하는 방법은 아래와 같다. 

1
2
3
4
5
6
7
<?php
    $data1 = "안녕하세요!";
    $data2 = 10;
 
    print $data1;
    print $data2;
?>
cs

변수에 데이터를 할당하려면 할당 연산자 =을 사용한다. 문자열에 경우 따옴표("" 또는 '')로 묶어준다. 숫자에 경우는 따옴표로 묶을 필요는 없다. 데이터를 참고하고 싶다면 print문을 사용하면 된다. 

PHP도 JavaScript 처럼 변수의 형을 선언하지 않고 사용할 수 있는데, 자동으로 형변환이 일어나는 것도 비슷하다. 아래의 표는 PHP의 변수형이다.

논리값(boolean) TRUE / FALSE의 진윗값
정수(integer) 양과 음의 정수이다.
부동소수점, 실수(float) 부동소수점, 실수이다.
문자열(string) 문자들, 문자열의 길이에는 제한이 없다.
배열(array) JavaScript의 배열과 같다.
오브젝트, 객체(object) 오브젝트를 초기화 하는 경우에 사용한다.
리소스(resource) 외부 리로스의 레퍼런스를 계속 유지한다.
널(null) 값이 없음을 표시한다.

배열

배열의 순서는 0번부터 안의 값의 갯수 만큼 순서가 정해진다. JavaScript의 배열과 유사하다고 할 수 있다. PHP의 배열 선언은 일반적인 변수선언과 같은 $을 사용한다. 배열에 데이터를 할당하는 방법은 아래의 코드를 참조하면 된다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
<?php
    // 배열에 데이터를 할당하는 방법이다.
    $week[] = "월";
    $week[] = "화";
    $week[] = "수";
    $week[] = "목";
    $week[] = "금";
    $week[] = "토";
    $week[] = "일";
 
    // 또는 아래와 같은 방법도 가능하다.
    $week[0= "월";
    $week[1= "화";
    $week[2= "수";
    $week[3= "목";
    $week[4= "금";
    $week[5= "토";
    $week[6= "일";
 
    // 배열에 들어간 값을 가져오는 방법이다.
    print $week[0];
    print "<br>";
    print $week[1];
    print "<br>";
    print $week[2];
    print "<br>";
    print $week[3];
    print "<br>";
    print $week[4];
    print "<br>";
    print $week[5];
    print "<br>";
    print $week[6];
?>
cs

이외에도 array 함수를 사용하는 방법이 있다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php
    // array 함수를 사용하는 방법이다.
    $month = array(1,2,3,4,5,6,7,8,9,10,11,12);
    $nations = array(
        "대한민국",
        "미국",
        "일본",
        "중국",
        "영국",
        "독일",
        "호주",
        "프랑스",
        "캐나다",
        "브라질",
        "러시아",
    )
?>
cs

이외에도 배열을 초기화 시킬 수 있다. 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?php
    //배열을 초기화 시킨다.
    $month = array();
    $nations = [];
    
    // array 함수를 사용하는 방법이다.
    $month = array(1,2,3,4,5,6,7,8,9,10,11,12);
    $nations = array(
        "대한민국",
        "미국",
        "일본",
        "중국",
        "영국",
        "독일",
        "호주",
        "프랑스",
        "캐나다",
        "브라질",
        "러시아",
    )    
?>
cs

아래의 두 가지 방법으로 초기화 시킬 수 있다. 배열을 변수와 구별하기 위해 코드를 시작할 때 먼저 초기화를 하면 가독성이 좋아진다.

1
2
3
4
<?php
    $week = explode(",","가,나,다,라,마,바,사");
    print $week[3];
?> 
cs

사용하는 방법은 $data = explode("구분 문자","문자열");의 형태를 가진다.