[입문자용 강좌] 상수?

[상수]
# 본내용은 스킨제작을 목적으로 하는 분들을 위한 입문자용 기본 강좌입니다.
# 입문자가 쉽게 php를 느낄수 있도록 되도록 간추려서 쉽게 구성한 강좌입니다.
# 입문자가 아니면 보실 필요가 없습니다.
# 강좌의 순서는 입문자가 쉽게 와닿을수 있도록 임의로 조정했습니다.
# 강좌는 누구나 읽고 사용할수 있지만, 다른 책의 내용으로 포함될수 없습니다.


1. '상수'란

상수란 변하지 않는 값 이란 뜻입니다.
한번 값이 정해 지면 하나의 프로그램 흐름 전체에서,
또는 하나의 페이지 전체에서 변할수 없는 값입니다.
이것은 이전에 설명한 '변수' 와는 다릅니다.


2. 상수를 정의하는 방법

define('상수명', '상수값');
예 > define('_G4_ALPHAUPPER_', 1);


3. 변수와의 차이점

상수는 사용할때 변수와는 다르게 앞에 $표시가 없습니다.
상수를 정의할때는 변수와 같이 = 으로 값을 대입시킬수 없고, 반듯이 위에서 설명한
define() 함수를 통해서만 값을 대입할수가 있습니다.

이미 정의된 상수를 다시 define() 함수를 통해 정의하게 되면, 에러가 발생합니다.
나중에 다시 설명하겠지만,
변수는 사용영역에 제한이 있지만
상수는 어느 곳에서나 항상 제한 없이 사용할수 있습니다.


4. 정의된 상수의 확인

해당 상수명의 상수가 이전에 정의되었는지 확인 할때에는 다음의 함수를 사용합니다.

defined('상수명‘)

예 > if (!defined('_GNUBOARD_')) exit;
즉, 이전에 _GNUBOARD_ 라는 상수명으로 상수가 정의되어 있지 않으면
프로그램을 여기서 종료시켜라 라는 뜻입니다.

defined()라는 함수는 상수의 정의 여부만을 판단하지 상수값을 돌려주는 것은 아닙니다.
이미 정의되어 있는 상수라면 true, 그렇지 않으면 false를 돌려줍니다.


5. 완전히 이해되지 않더라도 다음 단계로 넘어갑니다.

앞으로 다룰 내용들에서 차차 개념이 잡히게 됩니다.<div class='small'>[이 게시물은 관리자님에 의해 2011-10-31 17:12:10 PHP & HTML에서 이동 됨]</div>

첨부파일

상수.hwp (32 KB) 38회 2007-02-12 11:30
|

댓글 20개

아... 그렇구나... 그런데... 한번 상수로 정의하면 session이 유지하는 동안 global하게 여기저기의 php 프로그램에서 쓸 수 있나요? local, global 뭐 그런거는 php에는 없나요?
네 상수는 한번 정의 되고 나면

어디서든 항상 같은 값으로 사용될수 있습니다.

상수는 변수가 아니기 때문에

전역화 하지 않아도 지역에 영향을 받지 않습니다.
그렇군요. php의 상수는 다른 언어와는 조금 다르네요... 다른 언어는 전역화 시키는
과정과 서로 넘겨주는 과정이 딥따 복잡했는데... ㅎㅎ... 설명 감솨 합니다.
저는 처음 배운 언어가 apple basic이라... ㅋㅋ
그누보드의 예를 들자면

모든 페이지에서 항상 인클루드 되는 common.php라는 파일이 있습니다.

또 그속을 보면

역시 상수를 정의한 파일인 /lib/constant.php를 인클루드 하고 있는 것을 볼수 있습니다.

include_once("$g4[path]/lib/constant.php");

이런식으로.....

그러니까 다시 말하면

해당 파일에서 정의된 상수들은

common.php가 인클루드된 모든 파일에서는

아무런 제약없이 항상 같은 값으로 사용할수 있습니다.

상수는 변수가 아니므로, 함수내에서나 클래스 내에서나 전역화 하는 과정은

필요없습니다.

상수 자체가 전역입니다.
강좌 감사하게 잘보고 있습니다. ^^
네 감사합니다.

사실 이런것도 보는 사람이 있고,

관심을 보이는 사람이 있어야 할맛 납니다.

부족한 강좌지만 계속 관심 가져 주세요
저도 한자 한자 정독 하고 있습니다.^^

감사합니다.
네 감사합니다.
저도 몇번씩 되풀이 읽고 있답니다.

그러니깐 ... ?? define() <=상수를 정의하는 방법이 이것이라면...


include_once("$g4[path]/lib/constant.php"); 여기에서


include_once <= 이것이 상수이고
("$g4[path]/lib/constant.php"); <=이것이 상수값인가요..??
아네 인클루드에 대해서는 나중에 다룰것인데요

그것은 상수나 상수값이 아니구요

해당 파일을 현재 파일에 불러오는 과정이구요

그 파일을 에디터로 열어보면

몇개의 상수가 정의 되어있음을 보실수 있습니다.

그 파일의 내용이 그누보드에서 기본적으로 사용하는 상수라는 뜻입니다.
유창화님 강좌가 진행되는 동안 좀 귀찮게 질문을 하더라도 이해해 주시기를 부탁드립니다.

<?
if (!defined('_GNUBOARD_')) exit;

// 현재 접속자수 출력
function connect($skin_dir="")
{
global $config, $g4;

// 회원, 방문객 카운트
$sql = " select sum(IF(mb_id<>'',1,0)) as mb_cnt, count(*) as total_cnt from $g4[login_table] where mb_id <> '$config[cf_admin]' ";
$row = sql_fetch($sql); ---생략--------

위의 구문에서 처음에 있는
if (!defined('_GNUBOARD_')) exit; 이부분에서 defined <=이것이 상수이고
('_GNUBOARD_') <=이것이 상수값인가요..??

define() 함수를 통해서만 값을 대입할수가 있습니다. <=강의 내용중

상수를 정의 할 때는 항상 defined라고 항상 써야하나요..??

차분이 강의 진행을 보다보면 나중에 다 설명하시겠지만 중간중간 질문 좀 드리겠습니다.
완전 초보라 미리 양해 좀 구해봅니다. ~..~*
네에
질문 많이 하는 사람이 공부 잘하는 사람입니다.

지금 위에 보면 알겟지만

함수명이 다르죠?

제가 위에서 설명한 함수의 정의 할때 쓰는 함수는

define()

입니다.

defined()함수는 앞으로 차차 설명하겠지만

해당 이름의 상수가 정의 되어있는가를 알아보는 함수입니다.

정의되어 있으면 참을 돌려주고

정의되어 있지 않으면 거짓을 돌려줍니다.

위 예제구문에서는

_GNUBOARD_ 라는 상수가 정의 되어 있는가 를 물어봐서

정의 되어있지 않으면

정상적인 사용이아니니까 그만 봐라.....

이런 구문입니다.

상수를 정의할땐 항상 define() 를 사용해야 하구요

상수가 정의 되었는지 확인할때는 defined() 를 사용합니다.
그리고 첨언하자면

그누보드는 모든 페이지에서 항상 common.php를 인클루드 하는데요

여기서보면 또 항상 config.php를 인클루드 합니다.

그 파일을 열어보면

젤 상단에

// 이 상수가 정의되지 않으면 각각의 개별 페이지는 별도로 실행될 수 없음
define("_GNUBOARD_", TRUE);

요런 부분이 보일것입니다.

이것이 상수를 정의하는 부분이며

_GNUBOARD_ 가 상수명이고 true 가 상수 값입니다.
네~
자세한 설명 감사드립니다. 앞으로 신세 좀 지겠습니다.
예전에 제가 배울때 생각이나네요

전 30살에 재취업학원에서 첨 컴퓨터와 php를 접했는데요?

6개월 과정이었는데

시작일땐 컴맹이었는데

줄기차게 물어보고 직접 해본 탓에 6개월 지나선

수료생중 상위의 실력을 갖게 되었습니다.

그리고 바로 취업도 하고 공개보드를 발표하기도 하고요......

많이 물어보고, 또 직접 많이 해보면 금방 늘고 그렇습니다.

하지만, 제가 항상 잘 대답해 줄수는 없다는것은 염두에 두시기 바랍니다.
네~~
저도 나름대로 열심히 따라해 보겠습니다.
꼭 익히고 넘어가야 할 부분이 있다면
숙제 같은 것도 간혹 주시고 그러세요....ㅎㅎㅎ
위 설명으로는 좀 애매했는데.. 지식충전님의 질문과 유창화님의 답변을 보니 이해가 가고 있습니다.
대학때 교수가 이리갈키줬으면 A+은 따논 당상이었을텐데 말입니다. ㅠㅁㅠ
제가 대학으로 갈까요?

근데 오라는 사람은 없어요.

ㅎㅎ
홀.. 이런 식으로 php강좌 메뉴가 하나 잇어도 좋을 듯 하네요...;;
댓글을 작성하시려면 로그인이 필요합니다.

프로그램

+
제목 글쓴이 날짜 조회
18년 전 조회 1,742
18년 전 조회 4,791
18년 전 조회 2,133
18년 전 조회 4,920
18년 전 조회 3,283
18년 전 조회 2,215
18년 전 조회 1,909
18년 전 조회 2,190
18년 전 조회 1,815
18년 전 조회 1,918
18년 전 조회 1,921
18년 전 조회 2,559
18년 전 조회 3,600
18년 전 조회 6,056
18년 전 조회 3,959
18년 전 조회 3,143
18년 전 조회 2,213
18년 전 조회 2,483
18년 전 조회 2,278
18년 전 조회 2,378
18년 전 조회 2,488
18년 전 조회 2,931
18년 전 조회 2,618
18년 전 조회 2,073
18년 전 조회 3,201
18년 전 조회 3,663
18년 전 조회 3,925
18년 전 조회 3,405
18년 전 조회 3,455
19년 전 조회 2,646
19년 전 조회 2,558
19년 전 조회 2,548
19년 전 조회 2,411
19년 전 조회 2,635
19년 전 조회 3,916
19년 전 조회 3,734
19년 전 조회 2,154
19년 전 조회 2,089
19년 전 조회 1,624
19년 전 조회 3,941
19년 전 조회 5,981
19년 전 조회 7,059
19년 전 조회 2,556
19년 전 조회 2,783
19년 전 조회 4,251
19년 전 조회 2,239
19년 전 조회 3,688
19년 전 조회 2,963
19년 전 조회 2,805
19년 전 조회 2,274
19년 전 조회 2,554
19년 전 조회 2,663
19년 전 조회 3,155
19년 전 조회 3,831
19년 전 조회 3,343
19년 전 조회 2,864
19년 전 조회 2,346
19년 전 조회 3,021
19년 전 조회 3,124
19년 전 조회 2,628
19년 전 조회 2,370
19년 전 조회 3,401
19년 전 조회 4,949
19년 전 조회 5,143
19년 전 조회 2,366
19년 전 조회 2,254
19년 전 조회 5,056
19년 전 조회 9,035
19년 전 조회 2,117
19년 전 조회 4,997
19년 전 조회 4,430
19년 전 조회 2,699
19년 전 조회 5,036
19년 전 조회 2,869
19년 전 조회 3,752
19년 전 조회 2,687
19년 전 조회 3,497
19년 전 조회 2,025
19년 전 조회 5,454
19년 전 조회 1,784
19년 전 조회 6,144
19년 전 조회 2,949
19년 전 조회 6,126
19년 전 조회 6,905
19년 전 조회 3,805
19년 전 조회 2,278
19년 전 조회 2,181
19년 전 조회 6,966
19년 전 조회 2,466
19년 전 조회 4,019
19년 전 조회 5,417
19년 전 조회 2,744
19년 전 조회 1,793
19년 전 조회 1,640
19년 전 조회 1,589
19년 전 조회 1,862
19년 전 조회 1,880
19년 전 조회 1,864
19년 전 조회 1,785
19년 전 조회 2,575