PHP 기본 구문 (1)
PHP = C + Perl + Java / 출력 / 주석 처리 / 변수형
1
PHP 기본 구문 (1) (/p/php)
[시작하기 전에] 이 글은 "Kimho의 PHP5 웹프로그래밍" 책의 일부입니다.책의 전체 내용은 구글 플레이 도서에서도 찾아보실 수 있습니다.오디오 강좌는 이 ..
+
kimho 님께서 11개월 전에 PHP에 올린 글
[시작하기 전에]
이 글은 "Kimho의 PHP5 웹프로그래밍" 책의 일부입니다.
책의 전체 내용은 구글 플레이 도서에서도 찾아보실 수 있습니다.
오디오 강좌는 이 곳 뿐만 아니라 팟캐스트를 통해서도 들으실 수 있습니다.


[오디오 강좌 듣기]


2. PHP 기본 구문

이번 장에서는 PHP를 사용하기 위해 알아야 할 기본적인 구문들을 살펴볼 것이다.

PHP을 이용하여 문자열을 화면에 출력하는 방법에서부터 시작해서 변수와 연산자 등에 대해서 알아볼 것이다. 

외국어를 공부할 때 기본적인 구문의 사용법을 제대로 익히는 것이 중요하듯이 PHP라는 프로그래밍 언어를 배울 때도 마찬가지로 기본을 충실히 하는 것이 중요하다. 

이번 장을 통해서 PHP의 기본을 확실히 익혀두길 바란다.

이번 장에서 다루는 내용들은 다음과 같다.

  • PHP = C + Perl + Java
  • 출력
  • 주석 처리
  • 변수 형
  • 변수
  • 연산자
  • 변수 관련 함수


PHP = C + Perl + Java

PHP의 기본 문법은 C와 Perl의 문법을 어느 정도 받아들이면서 객체 지향형 프로그래밍 언어의 특성도 갖추고 있다. 

따라서 C나 Perl에 익숙한 사람은 보다 쉽게 PHP를 접할 수 있다.

특히 PHP5에서는 객체 지향형 프로그래밍 언어의 대표인 Java의 형태를 거의 대부분 받아들이고 있다. 

만약 Java를 사용해본 경험이 있는 독자라면 PHP5의 새로워진 객체 지향성에 감탄을 금치 못할 것이다. 

PHP가 순수 객체 지향형 프로그래밍 언어는 아닐지라도 그 형태를 거의 대부분 사용하고 있기 때문에 PHP를 이용하여 완벽하게 객체 지향형 프로그래밍을 할 수가 있다.


출력

PHP에서 출력을 위해 가장 많이 사용되는 구문은 echo와 print이다. 

다음 [예제 2-1]은 echo와 print를 이용하여 화면에 출력하는 예이다.


[예제 2-1] echo와 print를 이용한 화면 출력

<html>
<head>
<title>화면에 출력</title>
</head>
<body>
<?php
echo ("안녕하세요? <br>");
echo ("PHP의 세계에 오신 것을 환영합니다. <br>");
print ("우리 함께 PHP로의 여행을 떠나요^^");
?>
</body>
</html>


앞서 [예제 2-1]을 브라우저에서 실행한 화면은 다음 [그림 2-1]과 같다.


[그림 2-1] 화면 출력


[잠깐]
echo는 함수가 아니다.
echo는 함수가 아니고 언어 구조이다. 다시 말해 PHP에서 출력을 위해 지원하는 하나의 문법이다. 따라서 반드시 괄호를 사용해야만 하는 것은 아니다. 다음과 같이 괄호를 사용하든 사용하지 않든 모두 같은 결과를 출력한다.
echo ("안녕하세요");
echo "안녕하세요";
또한 print는 함수이지만 괄호를 사용하지 않아도 된다. 즉, 다음은 모두 같은 결과를 출력한다.
print ("안녕하세요");
print "안녕하세요";
앞에서처럼 보면 echo와 print가 차이가 없는 것 같지만, echo는 함수가 아니기 때문에 인자로써 사용될 수 없다. 즉, 다음과 같은 경우 첫 번째 줄은 echo가 인자로 사용되었기 때문에 실행 시에 에러가 발생하지만, 두 번째 줄은 print가 함수이기 때문에 인자로 사용되어도 에러가 발생하지 않는다.
print (echo "a"); // print의 인자로 사용되었기 때문에 에러가 발생한다.
echo (print "b"); // print는 함수이기 때문에 인자로 사용되어도 에러가 발생하지 않는다.


echo는 등호(=)를 이용하여 간단하게 출력하는 형태를 가질 수도 있다. 

PHP 태그의 앞쪽에 등호를 사용함으로써 출력 형식을 단순화할 수 있다. 

이 방법은 HTML 코드 내에 PHP 태그를 삽입할 때 많이 사용된다. 

다음 [예제 2-2]는 등호를 이용하여 간단하게 출력하는 예이다.


[예제 2-2] 등호를 이용하여 간단하게 출력

<?php
$a = "홍길동";
?>
<?=$a?> 님, 안녕하세요?


[예제 2-2]를 실행한 결과 화면은 다음 [그림 2-2]와 같다.


[그림 2-2] [예제 2-2]를 실행한 화면


주석 처리

주석은 PHP 코드 내에서 다른 코드의 영향을 받지 않고 간단한 메모 등을 남길 때 사용한다. 

PHP에서 한 줄짜리 주석은 // 혹은 #을 사용한다. 다음 [예제 2-3]은 한 줄 주석을 사용한 예이다.


여러 줄을 주석으로 처리하고자 할 때는 /*와 */를 사용한다. 

다음 [예제 2-4]는 여러 줄을 주석 처리하는 예이다.


[예제 2-3] 한 줄 주석

<?php
// 주석 부분은 출력되지 않는다.
print "나는 출력됩니다."; // 한 줄짜리 주석
print "나도 출력됩니다."; # 다른 형태의 주석
?>


여러 줄을 주석 처리할 때 주의할 사항은 /*와 */ 사이에 */가 또 들어가지 않도록 주의해야 한다는 것이다. 

왜냐하면 /*로 주석이 시작되면 */까지를 주석으로 보기 때문에 중간에 주석이 닫혀서 에러를 발생시키거나 원치 않는 결과를 출력할 것이기 때문이다. 

다음 [예제 2-5]를 실행하면 주석 처리가 잘못되어 화면에는 */ 라는 문자만 보이게 될 것이다.


변수 형

PHP에서는 8가지의 변수 형(Type)을 지원한다.

기본적인 5가지 변수 형은 Integer(정수형), Float(실수형), String(문자열), Boolean(논리형) 그리고 NULL이다. 

그리고 기본 변수 형의 복합 형태인 Array(배열)와 Object(객체)가 있다.

마지막으로 Resource 라는 변수 형이 있는데 이것은 표준은 아니지만 데이터베이스와 연결하거나 파일을 열 때는 이 변수 형으로 리턴 된다.


그런데 여러분이 알아둘 것은 PHP에서는 변수의 타입을 프로그래머가 선언하지 않는다. 

이것은 C나 Java와 같은 언어와 다른 점이다. 

PHP에서는 실행 중에 자동으로 변수의 타입을 변환한다.


PHP의 자동 형 변환 기능은 프로그래머로부터 변수의 형 지정이라는 큰 골치거리를 해결해준 것이다. 

프로그래머가 변수를 어떤 형으로 지정하고 어떤 형으로 변환해야 하는지에 대한 고민을 하지 않아도 PHP에서 알아서 변환을 해준다. 

어떤 의미에서 이것은 애매한 프로그램을 만든다는 생각이 들지도 모른다. 

그러나 웹 프로그램에서 너무 엄격한 변수 형 규칙은 많은 경우 시간 낭비라는 결과를 초래한다. PHP가 개발하기 쉽고 빠른 언어라고 하는 이유는 바로 이와 같은 특징들 때문이다.

만약 어떤 변수를 특정한 변수 타입으로 지정하고 싶다면 특별히 형 변환을 하거나 settype() 함수를 사용한다. 

이것에 대한 내용은 [2.4.7 타입 저글링] 에서 다시 한번 다루고 있다.


여기서는 배열과 객체를 제외한 나머지 변수 형에 대해서 모두 설명하도록 하겠다. 

배열에 대해서는 [4장 배열]에서 다루고 있고, 객체에 대해서는 [6장 클래스와 객체]에서 자세히 다루고 있다.


Integer (정수형)

Integer는 표현할 수 있는 모든 정수를 의미한다. 

PHP에서 Integer의 범위는 C에서 말하는 long 형과 같다. 

즉, 32비트 아키텍처에서는 -2,147,483,648에서 +2,147,483,647까지다. 

물론 이 범위는 플랫폼에 따라 달라질 수 있다.


PHP에서 정수는 10진수, 8진수, 16진수의 3가지 표기법으로 표기될 수 있다. 

다음 [예제 2-6]은 PHP에서 각각 10진수, 8진수, 16진수를 표기한 예이다.


[예제 2-6] 정수의 표기 예

<?php
$a = 1234; // 10진수의 표기 예
$a = -123; // 10진수의 음수 표기 예
$a = 0123; // 8진수의 표기 예
$a = 0x12; // 16진수의 표기 예
?>


10진수는 우리가 일상 생활에서 사용하는 정수이다. 

PHP에서는 10진수의 앞에 0을 쓰지 않으며 또한 콤마를 쓰지 않는다. 

단지 음수를 나타낼 때는 앞에 마이너스(-) 기호를 붙여 쓴다.


8진수는 0에서 7까지의 숫자로 표기한다. 사용 예로 파일 권한을 설정하는 것을 들 수 있다. 

예를 들어 유닉스 시스템에서는 0755와 같은 형태의 숫자로 파일의 권한을 설정하곤 한다. 

PHP에서 8진수는 0에서 7까지의 숫자로 표기하며 앞에 0을 붙여 쓴다.


PHP에서 16진수는 0x로 시작하여 뒤에는 0에서 9까지의 숫자나 A에서 F까지의 문자로 표기한다. 문자의 대소문자는 구분하지 않는다.


Float (Floating-point number, 부동 소수점 수)

Float은 부동 소수점 수이다. 

10진 숫자로 표기하며 C에서 double 변수 형과 같다. 

Float은 실수 혹은 double이라고 부르기도 한다.


고정 소수점 수는 정수부와 실수부를 소수점으로 나누어서 나타내는 방식임에 반해, 부동 소수점 수는 가수부와 지수부로 나타낸 방식이다. 

가수부는 수의 정밀도(precision)을 표현하는 부분이며, 지수부는 수의 크기(magnitude)를 표현하는 부분이다.

부동 소수점 수는 ‘숫자 다음 소수점 다음 숫자’의 형태로 표기하는 방법이 있고, 가수부와 지수부를 e로 분리하여 표기하는 방법이 있다. 

고정 소수점 수와 부동 소수점 수의 표기 예는 다음 [표 2-1]과 같다.


[표 2-1] 고정 소수점 수와 부동 소수점 수의 표기 예

고정 소수점 수부동 소수점 수
1410.231
0.0012
1.234
1.2e3
7E-10


부동 소수점 수에서 e 다음에 나오는 숫자 n은 10의 n승 자리 수를 의미한다. 

이 때 e는 대소문자를 구분하지 않기 때문에 e로 쓰든 E로 쓰든 상관이 없다. 

다음 [표 2-2]는 e를 사용한 부동 소수점 수 표기와 그 의미를 나열한 것이다.


[표 2-2] e를 사용한 부동 소수점 수 표기와 의미

부동 소수점 수의미
3e130
2.3e-102.3 * 10^-10
.2345E30.2345 * 10^3
0.54283e10.54283 * 10^1


[잠깐] 부동 소수점 수 정밀도
floor((0.1+0.7)*10)을 계산한 결과는 8이 아닌 7이 나온다. 내부적으로 7.9999999999...일 것이기 때문이다. 이처럼 몇몇 소수는 완전히 정확하게 표현할 수 없다. 예를 들면, 십진표기법의 1/3은 0.3333333… 이 된다.
따라서 두 Float형의 수를 비교할 때 부동 소수점이 동일한지 비교해서는 원하는 결과를 얻을 수 없을 수 있다. 그러므로 더 정밀한 비교를 원한다면 bccomp() 함수나 gmp_cmp()와 같은 함수를 사용해야 한다.


String (문자열)

PHP에서 문자열은 작은 따옴표(') 혹은 큰 따옴표(")로 둘러싸서 표현할 수 있다. 

이 때 작은 따옴표로 시작했으면 작은 따옴표로 닫아야 하고, 큰 따옴표로 시작했으면 큰 따옴표로 닫아야 한다.

그런데 만약 작은 따옴표로 시작했는데 문자열중에 작은 따옴표가 있으면 그 작은 따옴표까지를 문자열로 인식하면서 문제가 발생할 수 있다. 

이런 경우 문자열중의 작은 따옴표를 작은 따옴표 문자 자체로 인식하게 하려면 그 작은 따옴표 앞에 역슬래쉬(\)를 붙여 쓰면 된다. 

이것은 큰 따옴표를 사용할 때도 마찬가지로 문자열 중간에 큰 따옴표가 있으면 그 앞에 역슬래쉬를 붙임으로써 문제를 해결할 수 있다.


역슬래쉬를 이용하면 특수 코드 문자를 표현할 수 있다. 

예를 들어 \t는 탭 문자를 의미한다. 

이외에도 역슬래쉬를 이용하여 표현할 수 있는 특수 코드 문자는 다음 [표 2-3]과 같다.


[표 2-3] 역슬래쉬로 표현할 수 있는 특수 코드 문자

코드의미
\n새로운 라인
\r캐리지 리턴(Carriage return)
\t가로 탭(tab)
\\역슬래쉬 문자
\$달러(dollar) 기호
\"큰 따옴표


그런데 어떤 문자열이 매우 길면서 따옴표 등과 같이 역슬래쉬를 필요로 하는 문자가 많이 들어있다면 일일이 역슬래쉬를 붙여쓰기가 귀찮을 수 있을 것이다. 

이럴 때는 HERE docs 문법을 사용하면 된다.

HERE docs 문법을 사용하는 방법은, 먼저 <<< 다음에 어떤 식별자가 오고, 그 다음 줄에 사용하고자 하는 문자열을 써준 다음, 마지막에 앞서 나왔던 식별자를 써서 닫으면 된다. 

다음 [예제 2-7]은 HERE docs 문법을 사용한 예를 보여주고 있다.


[예제 2-7] HERE docs 문법 사용 예

<?php
$str = <<<EOD
Example of string
spanning multiple lines
using heredoc syntax.
EOD;
?>


[예제 2-7]은 $str 변수에 문자열을 대입하는 예이다. 

먼저 <<<로 HERE docs를 열고 식별자를 쓴다. 여기서는 식별자로 EOD를 썼다. 

그 다음 원하는 문자열을 마음껏 쓴 다음, 마지막에 앞서 썼던 EOD 식별자로 닫는다. 

이 때 닫는 식별자는 앞서 열었던 식별자와 같아야 한다.


또한 닫는 식별자는 반드시 줄의 가장 앞에 써야 하며, 닫는 식별자가 있는 줄에는 가능한 한 세미콜론(;)을 제외한 어떤 문자도 쓰지 않도록 한다. 

이 규칙을 지키지 않으면 HERE docs는 닫는 식별자를 찾지 못하여 마지막 줄에서 에러가 발생했다는 에러 메시지를 출력하게 될 것이다.

닫기 식별자는 반드시 알파벳이나 숫자나 밑줄(_)로 구성되어야 한다. 

그리고 첫 문자는 반드시 밑줄이나 알파벳이어야 한다.


Boolean (논리값)

Boolean 타입은 영국의 수학자 조지 불(George Boole)이 창안한 논리값이다. 

Boolean 타입은 단지 TRUE 혹은 FALSE라는 두 가지 값으로만 이루어져 있다. 

주로 제어 구조에서 어떤 코드 블록을 실행할 것인지 말 것인지를 결정할 때 사용된다 – 제어 구조에 대해서는 [3장 제어문]에서 배우게 될 것이다.

Boolean 값으로 TRUE 혹은 FALSE의 두 가지를 쓸 수 있지만, PHP에서는 두 가지 외에도 다른 변수 형의 값을 Boolean 값으로 가져올 수 있다. 

다음의 경우들은 Boolean으로 사용될 때 FALSE로 본다.

  • integer에서 0
  • float에서 0.0
  • 공백 문자열("")과 문자열 "0"
  • 아무 요소도 가지지 않은 배열
  • 아무 멤버 변수도 가지지 않은 객체
  • NULL

앞서의 경우 외의 다른 모든 경우에는 TRUE로 본다. 

특히 0이 아닌 음수의 경우도 TRUE로 본다는 점에 주의하도록 하자.


NULL

NULL은 아무 값도 가지지 않은 특별한 변수를 나타낸다. 

NULL은 문자열 공백("")도 아니고 숫자 0도 아니다. 

NULL은 일반적으로 어떤 변수 값을 초기화하거나 변수 값이 초기화되었는지 확인할 때 사용한다. 

다음과 같은 변수는 NULL값을 갖는다.

  • 변수에 NULL을 할당하였을 때
  • 변수에 아직 아무 값도 할당되지 않았을 때
  • unset() 함수를 사용하였을 때

다음 [예제 2-8]은 NULL값을 갖는 예이다.


[예제 2-8] NULL값을 갖는 예

<?php
$a = NULL; // NULL을 할당하였으므로 $a는 NULL이다.
$b; // 아직 아무 값도 할당되지 않았으므로 $b는 NULL이다.
$c = 5;
unset($c); // unset() 함수를 사용하여 $c를 NULL로 초기화 하였다.
?>


NULL 표현은 대소문자를 구분하지 않는다. 

따라서 NULL이라고 쓰든 Null이라고 쓰든, 혹은 null이라고 쓰든 상관이 없다.


Resource

Resource는 특별한 자원을 나타내는 특별한 변수이다. 

Resource는 파일을 열거나 데이터베이스와 연결하는 등의 작업에 대한 특별한 핸들러이다. 

따라서 어떠한 변수 형의 값도 Resource로 변환될 수는 없다. 

그러나 만약 Resource형으로 반환된 값을 강제로 출력한다면 화면에는 Resource id #1 과 같은 문자열로 출력될 것이다.


다음 [예제 2-9]는 opendir() 함수로 반환된 디렉토리 핸들을 이용하여 디렉토리 안의 파일 내용들을 읽는 예이다.


[예제 2-9] Resource 타입의 자원의 사용

<?php
$dir = "/tmp/"; // $dir은 디렉토리 핸들러로서 Resource 타입이다.
// 디렉토리를 열어서, 내용을 읽어 들인다.
if (is_dir($dir)) {
if ($dh = opendir($dir)) {
while (($file = readdir($dh)) !== false) {
print "filename: $file : filetype: " . filetype($dir . $file) . "\n";
}
closedir($dh);
}
}
?>


타입 저글링(Type Juggling)

PHP에서는 C나 Java와는 달리 변수의 선언부에 변수 형을 정의할 것을 요구하지 않는다. 

변수의 타입은 변수가 사용될 때 알아서 자동으로 정의된다. 

즉, $foo 변수에 문자열을 대입하면 $foo의 변수 타입은 문자열이 되고, Integer값을 대입하면 $foo의 변수 타입은 Integer가 된다.

Integer형태의 문자열과 Integer 숫자 값을 덧셈 연산을 하면 문자열은 자동으로 Integer형으로 변환된다. 

다음 [예제 2-10]은 서로 다른 변수 형의 값을 덧셈 연산하는 예이다.


[예제 2-10] 서로 다른 변수 형의 덧셈 연산

<?php
$a = "0"; // $a는 문자열이다.
$b = 2; // $b는 정수이다.
print $a + $b; // 결과는 2이 출력된다.
?>


만약 어떤 변수를 강제로 형 변환하고자 한다면 원하는 타입의 이름을 변수 앞에 괄호를 사용하여 써줌으로써 형 변환을 할 수 있다. 

다음 [예제 2-11]은 Boolean 형으로 형 변환하는 예이다.


[예제 2-11] 형 변환

<?php
$a = 10; // $a는 Integer형이다.
$b = (boolean) $a; // $b는 Boolean형이다.
?>


PHP에서 허용되는 형 변환은 다음과 같다.

  • (int), (integer) : Integer로 형 변환한다.
  • (bool), (Boolean) : Boolean으로 형 변환한다.
  • (float), (double), (real) : Float으로 형 변환한다.
  • (string) : String으로 형 변환한다.
  • (array) : Array로 형 변환한다.
  • (object) : Object로 형 변환한다.


형 변환 시 괄호 안에는 탭이나 빈칸이 허용된다. 즉, (int)와 ( int )는 기능적으로 동일하다.


만약 문자열로 형 변환 하고자 하는 경우에는 괄호를 사용하지 않고 큰 따옴표 안에 변수를 넣어 변환할 수도 있다. 

다음 [예제 2-12]는 큰 따옴표를 이용하여 문자열로 형 변환하는 예이다.

[예제 2-12] 큰 따옴표를 이용하여 문자열로 형 변환

<?php
$a = 10;
$b = "$a"; // $b의 타입은 문자열이다.
?>


변수

PHP에서 변수를 사용하려면 간단하게 문자열이나 숫자 혹은 밑줄(_) 문자 앞에 $를 붙이면 된다. 

즉, PHP 코드 내에서 $가 붙어있으면 무조건 변수라고 보면 된다. 

$ 바로 다음에는 문자나 밑줄 문자가 와야 하며 숫자가 먼저 와서는 안 된다. 

예를 들어 $1이나 $3var 같은 이름은 앞에 숫자가 왔으므로 변수 명으로 쓸 수 없다.

또한 $~name이나 $page-line처럼 밑줄 문자를 제외한 특수 문자를 변수 명에 넣을 수 없다.


변수에 값을 대입할 때는 등호(=) 연산자를 사용하게 된다. 

이러한 연산자를 대입 연산자라고 하는데 대입 연산자에 대해서는 [2.6 연산자]에서 자세하게 다루고 있다. 

사용 형식은 =의 왼쪽에 변수 명을 쓰고 오른쪽에 변수에 대입할 값을 쓰면 된다. 

다음은 변수에 값을 대입하는 예이다.


$a = "kimho";   // 변수 $a에 문자열 "kimho"를 대입
$b = 35; // 변수 $b에 정수 35를 대입


메모리 해제

PHP에서 변수가 사용되면 시스템에 변수의 값만큼 메모리를 차지하게 된다. 

일반적인 PHP 프로그램에서는 변수가 시스템에서 차지하는 메모리의 양이 적기 때문에 대개의 경우 메모리 문제를 신경 쓰지 않아도 된다. 

게다가 PHP에서는 페이지의 실행이 끝나면 사용되었던 변수의 메모리를 자동으로 해제한다.


그런데 PHP 프로그램이 매우 큰 경우라면 때로는 메모리의 사용이 문제가 될 수도 있다. 

그런 경우 변수가 차지하고 있는 메모리를 임의로 해제할 일이 생기게 된다. 

PHP 코드상에서 변수를 메모리 상에서 해제 시킬 수 있는 두 가지 방법이 있는데 NULL을 사용하는 방법과, unset() 함수를 사용하는 방법이다.


NULL을 사용하는 방법은 변수에 NULL이라는 값을 대입하는 방법이다. 

NULL이 대입되면 변수 자체는 남아있지만 메모리에 대한 포인터는 남아있지 않게 된다.

이에 반해 unset() 함수를 이용하면 변수가 메모리 상에서 완전히 사라지게 된다.

변수가 메모리 상에 남아있는지 확인하려면 isset() 이나 empty() 함수를 사용하여 확인할 수 있다. 

또한 변수가 NULL 값인지 확인하려면 is_null() 함수를 사용하면 된다.


참조 (& 연산자)

기본적으로 변수에 변수를 대입하면 대입하는 변수는 대입되는 변수의 카피본으로 새로이 생성된다. 

즉, 대입하는 변수 값이 변해도 새로 생성된 변수의 값은 변하지 않는다.

다음 [예제2-13]은 변수에 값을 대입하고 임의로 변경하였을 때 어떻게 변수 값이 출력되는지 보여주고 있다.


[예제 2-13] 변수에 변수를 대입하는 예

<?php
$a = "keyboard";
$b = $a; // $b에 $a를 대입
$a = "mouse"; // $a를 변경
print $b; // $b를 출력.
// $a값의 변경에 관계없이 ‘keyboard’가 출력된다.
?>


그런데 만약 두 개의 변수가 서로 같은 메모리를 공유하도록 하길 원한다면 참조 연산자인 &를 사용하면 된다. 

& 연산자를 이용하여 변수를 대입하면 두 개의 변수는 서로 같은 메모리를 공유하게 된다. 

따라서 하나의 변수 값이 변경되면 다른 하나의 변수 값도 변경된다.

두 변수 사이의 참조 관계를 해제하길 원한다면 unset() 함수로 변수를 해제하거나 다른 값을 참조하도록 만들면 된다.

다음 [예제 2-14]는 참조 연산자를 이용하여 변수에 대입하는 예를 보여주고 있다.


[예제 2-14] 변수의 참조를 대입하는 예

<?php
$a = "keyboard";
$b = &$a; // $b를 $a의 참조 값으로 생성.
$a = "mouse"; // $a를 변경
print $b; // $b를 출력.
// $a의 참조이므로 $a값인 ‘mouse’가 출력된다.
?>


상수

상수는 한번만 선언되고 더 이상 변경할 수 없는 변수이다. 

PHP에서 상수는 define() 함수를 사용하여 선언한다. 

상수에는 $가 붙지 않으며 대입 연산자(=)로 값을 할당할 수 없다.


일반적으로 상수를 선언할 때는 대문자를 사용하여 선언한다. 

반드시 대문자로 선언하도록 문법이 있는 것은 아니지만, 대문자로 선언해야 그 변수가 상수라는 것을 알아보기 쉽기 때문이다. 

다음 [예제 2-15]는 상수를 선언하여 사용하는 예이다.


[예제 2-15] 상수 사용

<?php
define('USER_NAME', "kimho");
print USER_NAME; // ‘kimho’가 출력된다.
?>


1
URL
사탕 주기
조회수 313
댓글 0
1
URL